对封装继承多态的理解
封装
- 即把对象的属性和方法包裹起来, 只能通过约定好的接口实现访问
- 封装是一种信息隐藏技术,在java中通过关键字private实现封装。
封装的作用:
① 对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。
②对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。
继承
继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
为什么要继承呢:
1、反映现实的真实关系
2、减少代码冗余
3、对父类的属性和方法进行扩展和重写
继承中,子类不可以选择性的继承父类的东西,而是全部继承父类的属性和方法。其中父类又叫超类或基类,子类又叫派生类。父类是子类的一般化,子类是父类的特化(具体化)。java中不支持多继承,一个类最多只能有一个父类。而在java中多继承是通过接口实现的。
抽象类和接口的区别
抽象了和接口都不能直接实例化,子类继承/实现,抽象类/接口必须实现所有方法,否则子类只能是一个抽象类或接口
接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。
- 抽象类中可以有构造方法,接口中不能
- 抽象类可以有普通成员变量(public,protected,private),接口只能有静态变量默认为public static final
- 抽象类可以有普通方法,接口所有方法必须是抽象的
- 抽象类中可以有静态方法,并且能调用,接口不能有静态变量(
JDK1.8后接口也可以有可调用的静态变量
) - 类只能单继承,接口可以多继承
多态
多态主要是基于继承和重写,最终可以实现相同的类型调用相同的方法,结果不相同
例如:有一个动物类,里面有一个方法输出,动物吃食物
小猫继承动物类后,重写这个方法输出,小猫吃鱼干
小狗继承动物类后,输出小狗吃骨头