1 基本概括
![a5cabe2cd286860f50bfb9bb55b57a63.png](https://i-blog.csdnimg.cn/blog_migrate/651d78e4071db6a8e7e2646ea4cfc578.jpeg)
2 详解
封装:
是将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
封装的优点:只能通过规定的方式来访问数据;隐藏类的实现细节;方便加入控制语句(比如验证参数合法性);方便修改实现(比如修改了属性的类型,接口可以添加一次转换)。
继承:
继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。简单概括为,父类提供共性,子类补充特殊性。
使用继承时的三个关键:子类拥有父类的所有属性和方法,但只能调用非private的属性和方法;子类可以对父类进行扩展,拥有自己的属性和方法;子类可以自己实现父类的方法。
构造器:子类不能继承父类的构造器,只能调用父类的非private构造器,使用super()。切记必须在子类构造器第一行调用。
protected 关键字:方便同一个包的类和子类访问。
向上转型:class A;class B extend A;A b = new B() 的使用,即B是A的意思。
切记谨慎使用继承,理解is-a的关系。代码重用可以考虑工具类,行为相同可以考虑接口。《Think in Java》提到:问一问自己是否需要从子类向父类进行向上转型。如果必须向上转型,则继承是必要的,但是如果不需要,则应当好好考虑自己是否需要继承。
多态:
所谓多态,就是指一个引用(类型)在不同的情况下的多种状态。也可以理解为,多态是指通过指向父类的指针,来调用在不同子类中实现的方法。
在上面提到子类可以自己实现父类的方法。例如 class A;class B extend A;class C extend A;在B 和C中分别自己实现了A的某个函数,当A b = new B() A c = new C() 时,调用b,c 相同函数可能会返回不同的行为,因为父类的引用变量指向子类对象了。
喜欢的话可以点下关注。