面向对象(二)

继承和多态

(一). 继承的本质: 将父类对象中子类可见的成员(包括属性, 方法)复制到子类对象中, 

          将父类融入子类, 之后分析子类运行过程时, 不用考虑父类.

   多态的本质: 父类引用指向子类对象

  

 1 public class Parent {           // 研究继承的本质
 2     public void f1() {
 3         System.out.println("Parent f1");
 4         f2();
 5     }
 6 
 7     public void f2() {
 8         System.out.println("Parent f2");
 9     }
10 }
 1 public class Child extends Parent {
 2     public void f1() {
 3         System.out.println("Child f1");
 4         super.f1();
 5     }
 6 
 7     @Override
 8     public void f2() {
 9         System.out.println("Child f2");
10     }
11 }
1 public class T {
2     public static void main(String[] args) {
3         new Child().f1();
4     }
5 }

 

 

 

(二). 继承和多态 重写  (注: 此处的接口看作父类)

 

 

属性

方法

继承

普通类重写

能用子类独有属性, 父类独有属性, 子父类属性同名时, 用子类的值

能用子类的独有的方法, 父类独有方法(继承接口除外, 父类所有方法必须重写), 子父类的方法同名时, 用子类的方法

抽象类重写

接口重写

多态

普通类重写

只能用父类的属性, 和对应的属性值

只能用父类的方法(包含父类独有, 被子类重写的同名方法)

抽象类重写

接口重写

 

 

 

 

 

 

 

 

 

 

 

 

 

用一句话总结:

1. 继承: 子类有的就用子类的, 子类没有的就用父类的成员变量或方法

2. 多态: 只能用父类的成员变量和成员方法, 如果子类继承后对父类的某个同名方法

        进行重写, 则用重写后的方法. (此处不妨联系起基因突变一起理解, 对同一方

     法的不同表现, 所以子类有重写某个方法时, 则用重写后的方法)

 

(三). 多态要满足的条件:

1. 有继承关系

2. 父类引用指向子类对象

3. 子类对同名方法进行重写

 

posted on 2021-10-04 17:03  Hrunjie  阅读(25)  评论(0编辑  收藏  举报

导航