继承:子类继承父类中所有的属性和方法,但是对于private的属性和方法,由于这个是父类的隐私,所以子类虽然是继承了,但是没有可以访问这些属性和方法的引用,所以相当于没有继承到。很多时候,可以理解为没有继承。
多态:就是父类引用可以持有子类对象。这时候只能调用父类中的方法,而子类中特有方法是无法访问的,因为这个时候(编译时)你把他看作父类对象的原因,但到了运行的时候,编译器就会发现这个父类引用的原来是一个子类的对象,所以如果父类和子类中有相同的方法时,调用的会是子类中的方法,而不是父类的。
多态的情况下:
成员的特点——
1.成员变量
编译时:参考应用型变量所属的类中是否有调用的成员变量。有,编译通过;没有,编译失败
运行时:参考引用型变量所属的类中是否有调用的成员变量,并运行该所属类中的成员变量
简单地说——编译和运行都参考等号的左边!!
2.成员函数(非静态)
编译时:参考引用型变量所属的类中是否有调用的函数。有,编译通过;没有,编译失败
运行时:参考的是对象所属的类中是否有调用的函数
简单地说——编译看左边,运行看右边
3.静态函数
编译时:参考应用型变量所属的类中是否有调用的成员变量。
运行时:参考应用型变量所属的类中是否有调用的成员变量。
简单地说——编译和运行都参考等号的左边!!
其实对于静态方法,是不需要对象的,直接用类名调用即可