封装
属性私有,get/set
该露的露,该藏的藏
高内聚,低耦合
高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;
低耦合仅暴露少量的方法供外部使用;
private 修饰符 私有的
属性私有后,需要通过 public 的 get/set 方法 获取属性
在面向对象的编程语言中,对象是封装的最基本单位,面向对象的封装比传统语言的封装更为清晰、更为有力;
封装的意义
提高程序的安全性,保护数据
隐藏代码的实现细节
统一接口
提高系统的可维护性
继承
本质是对某一批类的抽象,且子类(派生类)是父类的扩展;
子类继承了父类就拥有父类的全部方法,和属性;
在JAVA中所有的类,都默认直接或间接继承Object类;(方便使用一些本地的object中的方法)
JAVA中只有单继承,没有多继承 一个儿子只能有一个父亲,一个父亲可能有多个儿子;
子类中可以加入若干新的内容,或修改原来的方法使之更适合特殊的需要,这就是继承;
继承的目的:提高代码复用性,和可扩展性;
实例化子类
如果这个类存在继承关系,那么实例化子类的时候,默认会先执行父类的构造方法,再执行子类的构造方法,两个各执行一次;
这其中存在一个隐藏代码 super();
而且子类调用父类的构造器,super();必须放在子类构造方法代码的第一行;
重写
方法重载和重写是不一样的;
重写都是方法的重写和属性无关;
在继承关系下才能重写;
重写无法影响到父类的静态方法;
代码理解
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hJzPp6Ag-1618208685043)(C:\Users\hang.li\AppData\Roaming\Typora\typora-user-images\image-20210411213202626.png)]
A继承B 父类的引用指向子类 B b=new A();
方法的调用只和左边定义的数据类型有关;(a或b)
静态方法和非静态的方法区别很大;
特点:
重写需要有继承关系,子类重写父类的方法;
方法名必须相同,参数列表必须相同;
修饰符:范围可以扩大 public>protected>default>private;
抛出的异常:范围可以缩小,但不能扩大;
子类的方法和父类的必须一致,方法体不同(因为父类的方法子类不一定需要,或者不一定满足)
多态
多态分为两种:设计时多态、运行时多态
设计时多态:即重载,
运行时多态:即重写,在声明时使用父类,在实现或调用时使用具体的子类;即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性
多态的目的,增加代码的灵活度;
总结
1.Java中应尽量减少继承关系,这样可以降低耦合度
2.使用多态时,父类调用发放时,优先调用子类的方法,如果子类没有重写父类的方法,那么再调用父类的方法;