面向对象3大特征

《封装》

 

 

 

 《实现封装》

 

 

 

 《继承》

继承主要是为了提高代码的复用性,将很多类中共有(相似)的属性和方法提取出来,进行继承

 

 

 

 

《继承实现》

《细节注意》

 

 

 

 注意是辈数越高则越先加载执行,任何一定都先加载的是object类

 所谓is-a关系是:比如我有一个cat类和animal类,

cat is a animal,所以cat extends animal 

《继承在内存中的体现》

 相当于子类继承知识一样,他会将从不同父类中继承的知识都保存下来,并且从不同父类中继承过来的还会加以区分

《继承中使用从父类继承过来的属性与方法的规则》

 所以这里如果用son.name,则其中是大头儿子,son.age是39,son.hobby是旅游

《super》

 

 

 注意使用方法:super.属性名;  super.方法名(参数列表)  

上述使用super是不再看子类中的成员,而是直接往父类身上找,如果没有则进一步往上找

 

 

 

 《重写》

 

 《子类成员方法的重写(特殊)》

比如父类是public int sum(){},而子类是 private int sum(){},这就不行

 《在继承中的注意点》

子类对象在进行构造时(调用构造函数),会自动调用超类的构造函数,但是其默认是调用其中的无参构造函数,如果在超类中无参构造函数没有显示地写出,被有参构造函数占用时,这个时候就会报错

这个时候我们就要在子构造函数的第一行调用super(),显示地调用其有参构造函数

 

 

 

 

 

 

 

 

 《多态》

 

 《方法的多态》

重载与重写体现出多态

《对象的多态》

 

 

 

 《向上转型》

上述的行为为向上转型:

 

 

 

 《向下转型》

 

 《细节注意》

 

 

 

 《动态绑定机制》

 

 将上面的问题小小改变一下:

 

 

 分析:

 

 

 在a.sum()中肯定会调用class A中的sum(),但是这时class A中有getl(),class B中也有getl(),那么要调用那个中的呢?

我们能够看到

 

 

 B对象中的方法会与该对象中的内存地址(运行类型)绑定,那么就说明了是调用class B中的方法

但是i在class A与class B中也都有:

 则知道是调用class B中的i了

《综合》

 

posted @ 2022-07-12 11:10  次林梦叶  阅读(37)  评论(0)    收藏  举报