-
单向继承
在java中子类继承父类,那么子类可以得到父类的非私有的属性以及方法。
public class Polymorphic { public static void main(String[] args) { Animal cat = new Cat(); System.out.println(cat.name); cat.show(); } } class Animal { String name = "animal"; private String age = "15"; public void show(){ System.out.println("animal"); } } class Cat extends Animal { String name = "cat"; @Override public void show() { System.out.println("cat=="+super.age); //报错 } }
-
多态转化
平时开发时我们会选择使用继承或者接口实现类的方式,对代码进行解耦操作。然后我们就需要使用类转化,也就是多态其中的一种-->父类引用指向子类对象。
father ff = new son()
但是应该注意的是,我们要理解子类和父类之间的关系,子类是对父类的扩展,子类拥有父类所没有的属性和方法。
比如上面的代码,大多人都听过一句话,
- 对于方法来说:编译看左,运行看右。
- 对于属性来说:编译看左,运行看左。
所以上面这两句话一定要忘掉!!学习要灵活,不能靠背口诀
-
我的理解
father ff = new son()
在使用接口或者父类接收子类对象时,那依然是父类对象的引用,那么ff去调用father的方法,那依然是父类自己的方法,只是因为子类重写了父类的方法,那么在调用方法时才会去调用子类重写的方法。对于属性而言没有重写的说法,那么自然ff调用时只会调用父类自己的属性与子类无关。而子类使用super关键字便可以使用父类的非私有的属性和方法。但是在真正操作的时候会发现使用this也可以操作父类的非私有的方法和属性,这是因为继承就意味着拿走。