我正在研究静态和动态多态性,并获得了以下链接:
在所有这些链接中,有人说重载是多态性的一个例子,然后我又遇到了另外两个地方,有人说重载与多态性无关,链接是:
Head First Java第二版第7章(继承和多态)最后一个主题:重载方法
。
现在我不能确定它是否是一种多态性,如果不是,在OOPs中有没有什么叫做静态多态性的东西?
我在我的程序中使用了实现继承,并且我的子类中的方法没有在main方法中被调用。它显示错误"The method getArea() is not defined in type Second“。getPerimeter()方法也有同样的问题。
我尝试过设置值和更改参数。
package firstproject;
import java.util.Scanner;
import java.util.Date;
import java.util.ArrayList;
public class Second{
public String color="red" ;
嗨,我只想确定我的概念是正确的。java中的重载意味着您可以拥有具有不同数量的参数或不同数据类型的构造函数或方法。i.e
public void setValue(){
this.value = 0;
}
public void setValue(int v){
this.value = v;
}
这个方法怎么样?它是否仍然被视为重载,因为它返回的是不同的数据类型?
public int setValue(){
return this.value;
}
第二个问题是:什么是在java中覆盖的?它与继承有关吗。让我有以下几点:
public class Vehicle{
我正在使用Java的反射API,并且正在编写检查给定对象并描述其字段、方法等的方法。
我使用getFields()方法迭代不同的属性并显示对象内容:
public static void display(Integer i)
{
System.out.println("An integer: " + i);
}
// Basically a method for each primitive type wrapper
public static void display(Object o)
{
for (Field f : c.getFields())
我想知道这是否是c++中多态的一个例子。我检查了OOP中的示例,但没有找到任何纯过程方式的编程。提前感谢您的回答!
#include <iostream>
using namespace std;
int return_value(int a) {
return 5;
}
char return_value(char b) {
return 'a';
}
int main() {
int a = 1;
char b = 'c';
cout << return_value(a);
cout <<
我想在基类中定义一个函数,在一个子类中定义一个同名函数和另一个签名,如下所示:
class A {
public:
void foo () {}
};
class B : public A {
public:
void foo(int x) {}
};
int main() {
B b;
b.foo();
}
但是它会导致编译错误:no matching function for call to ‘B::foo()’。如果我在B类中注释foo定义,它会编译。如何解决这个问题?
我真正想要的是在基类中定义一个多义接口,并在子类中重新定义语义。
UPD:谢谢,这个例子的答案有效
我不明白为什么会发生这种行为:
class Base
{
public:
virtual void enablePolymorphism();
};
class Derived : public Base
{
public:
void enablePolymorphism();
};
class Derived2 : public Base
{
public:
void enablePolymorphism();
};
void callMe(Base base)
{
printf("base");
}
void callMe(Deri
这类问题已经回答了,但这使我感到困惑。我花了很长的时间去看很多答案,所以在复制之前请先把我的问题看一遍。
案件1-
静态多态-功能重载动态多态-功能覆盖
链接- ,和许多其他。
我的困惑是,在所有示例中,动态多态性都是使用向上转换显示的。如果我没上床呢。
class A{
public void show(){
System.out.print("A");
}
}
class B extends A{
public void show(){
System.out.print("B");
}
publ
我只是偶然发现了一个非常有趣的问题。给出了以下代码:
using System;
class Program
{
class A { }
class B : A { }
private static void MyMethod(A a) /* first method */
{
Console.WriteLine("A"); ;
}
private static void MyMethod(B b) /* second method */
{
Console.WriteLine(