class A ...{
public String show(D obj)...{
return ("A and D");
}
public String show(A obj)...{
return ("A and A");
}
}
class B extends A...{
public String show(B obj)...{
return ("B and B");
}
public String show(A obj)...{
return ("B and A");
}
}
class C extends B...{}
class D extends B...{}
(二)问题:以下输出结果是什么?
A a1 = new A();
A a2 = new B();
B b = new B();
C c = new C();
D d = new D();
System.out.println(a1.show(b)); ①
System.out.println(a1.show(c)); ②
System.out.println(a1.show(d)); ③
System.out.println(a2.show(b)); ④
System.out.println(a2.show(c)); ⑤
System.out.println(a2.show(d)); ⑥
System.out.println(b.show(b)); ⑦
System.out.println(b.show(c)); ⑧
System.out.println(b.show(d)); ⑨
a1.show(b)里面的b参数是什么意思 , A a2= new B(); a2为 A类型 但是b是B的实例,为什么不能调用B的方法。 求详细解答每个输出的结果 这个概念上有点迷糊 多谢
再比如⑧,b.show(c),b是一个引用变量,类型为B,则this为b,c是C的一个实例,于是它到类B找show(C obj)方法,没有找到,转而到B的超类A里面找,A里面也没有,因此也转到第三优先级this.show((super)O),this为b,O为C,(super)O即(super)C即B,因此它到B里面找show(B obj)方法,找到了,由于b引用的是类B的一个对象,因此直接锁定到类B的show(B obj),输出为"B and B”。
上面是解答 但是我不明白 前面在类B找show(C obj)方法, 为什么后面又提到到B里面找show(B obj)方法。
有一点很迷糊 A a1=new A(); a1的类型为A 但是 b又是 B的实例, 那么、a1.show(b) 到底是去 A里面找方法 还是B里面找方法
追答去A里边找方法喽
继承和多态的关系
Java中继承和多态的关系为:继承是指子类继承父类中所有的属性和方法,但对于private的属性和方法,子类虽然可以继承,却无法访问。而多态是指父类的某个方法被子类重写时,可以各自产生自己的功能行为。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概...
为什么要使用java的继承与多态?使用java的继承与多态的好处是什么?
继承和多态是面向对象的几大特性之一 继承:如果你的多个类中具有相同的属性,就可以把那些相同的属性提取出来做为父类,其他那些类继承父类,子类将会拥有你类的所有的非私有的属性和方法,这样即可以减少代码的冗余,又增强了代码的可读性和健壮性 多态:多态分为静态的多态和动态的多态,静态的多态是...
java中假设B继承A,C继承B 下面A a=new C();与C a=new C()有区别吗?多...
在 Java 中,多态主要通过继承和接口实现来实现。在上述示例中,A a = new C(); 就是一个多态的应用。因为在这里,A 类型的引用变量 a 可以指向 C 类型的实例对象,这就是多态的一种表现形式。通过多态,可以实现代码的灵活性和可扩展性,让代码更加优雅和易于维护。
封装、继承、多态之间的关系是什么?
3、多态 就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。
java语言中继承的特点是什么?多态有什么好处?
2、多态:方法的覆盖(方法的重写overriding)、方法的重载(overload)3、封装一.继承 继承就是子类对父类的继承.包含父类的方法,还可以添加自己独有的方法。二.多态 方法名称允许相同,但根据传入参数的类型,个数不同形成多态的形式. 方法覆盖要满足5个条件:(方法覆盖:存在继承关系)1、...
继承与多态的关系?
在C++中允许定义类之间的继承关系。当一个类继承另一个类时,这个类被称为继承类、派生类或子类,另一个类被称为被继承类、基类或父类。子类能够继承父类的全部特征,包括所有的数据成员和成员函数,并且子类还能够定义父类所没有的、属于自己的特征,即自己的数据成员和成员函数。通过类的继承关系,使得一些类的代码...
什么是多态?
多态首先是建立在继承的基础上的,先有继承才能有多态。多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,即父类同一个方法,在继承的子类中表现出不同的形式。多态成立的另一个条件是在创建子类时候必须使用父类new子类的方式。多态(Polymorphism)按字面的意思就是“多种状态”。在面向...
java一个类可以继承多个类吗
在Java中,一个类可以继承多个类。拓展知识:这种特性被称为多态性或多重继承。一个类可以继承自一个或多个父类,只要这些父类没有直接的继承关系。在Java中,使用关键字<extends>来声明一个类继承另一个类。例如: class Animal { \/\/ Animal类的公共方法 } class Dog extends Animal { \/\/ Dog...
java中假设B继承A,C继承B 下面A a=new C();与C a=new C()有区别吗?多...
如果此方法继承自A或B,那么即使在C中重写了此方法,这两个句子产生出来的a调用此方法产生的结果都是一样的,这就是多态性。但上面这话不适合于静态成员和静态方法,比如你可以在A,B,C中都定义 public static String getS()并返回不同值,这几个getS()之间不是重写的关系而是各管各的。如果是 A...
java中假设B继承A,C继承B 下面A a=new C();与C a=new C()有区别吗?多...
可以报站,到公交站可以报站让乘客下车。总体而言就是:对象能调用哪个方法是根据我们所知道的它是哪个类来看,而调用该方法实际执行的操作是根据它实际上是哪个类来看。子类继承父类就有了父类的方法,而重写父类的方法就改掉了实际执行的操作。这就是多态。希望对你有帮助。