如果我使用Superclass初始化子类对象,为什么该对象具有子类的属性,但是超类的方法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果我使用Superclass初始化子类对象,为什么该对象具有子类的属性,但是超类的方法?相关的知识,希望对你有一定的参考价值。

我想理解为什么会这样发生以及以下现象的优势使用:我使用Superclass初始化子类对象,为什么对象具有子类的属性而且超类的方法?

查看代码以了解我的真正含义:

class SuperClass {
public String s = "'This is the superclass'";
public String method() {
return s;
    }
}
class SubClass extends SuperClass {
public String s = "'This is the subclass'";
public String method() {
return s;
    }
}

public class SubClassTest {
public static void main(String[] args) {
SuperClass sc = new SuperClass();
System.out.println("Superclass s:  " + sc.s + " bzw. method: " + sc.method());
SubClass subc = new SubClass();
System.out.println("SubClass s:  " + subc.s + " bzw. method: " + subc.method());
SuperClass x = subc;
System.out.println("x s: " + x.s + " bzw. method: " + x.method());
    }
}

输出如下:

Superclass s:  'This is the superclass' bzw. method: 'This is the superclass'
SubClass s:  'This is the subclass' bzw. method: 'This is the subclass'
x s: 'This is the superclass' bzw. method: 'This is the subclass'
答案

正如Ramkumar所说,这个link可能会帮助你

您不能覆盖已定义的类的结构,您可以覆盖该行为。类的变量本质上不是多态的。

以上是关于如果我使用Superclass初始化子类对象,为什么该对象具有子类的属性,但是超类的方法?的主要内容,如果未能解决你的问题,请参考以下文章

将对象转换为 Parcelable 超类的子类?

03python面向对象编程5

面向对象特征二----继承性

如何检查哪个子类是超类的对象? [复制]

面向对象的特征二:继承性

20-面向对象的特征二:继承性