一、Java面向对象三大特性
1、封装:
对象属性的私有化private,使用公共的getter和setter方法对外提供访问。
2、继承:
可以方便地复用父类地代码。
- 子类只是继承了父类的所有方法和属性,包括私有的,但是对于父类私有属性和方法,子类无法访问;
- 查询方法和属性,优先找子类,如找不到再找父类;或者子类使用this、super关键字来区分和父类相同的变量和方法。
- 子类可以有自己的属性和方法。
- 子类可以使用“重写”的方式覆盖父类的方法。(父类如果有private、static(属于类)、final等修饰符的方法无法重写覆盖)
- 子类的构造方法中,默认有一个super(),即调用(不叫继承)父类的无参构造方法。如果父类只有有参构造,子类得显式使用super调用父类有参构造才能不发生编译错误。
- 如果父类是包含抽象方法的一个抽象父类,则子类一定要重写父类中的抽象方法,否则子类还是抽象类。抽象类有构造方法,但是是不能创建对象的。
3、多态
简而言之:编程的时候,父类引用指向子类对象。编译看左边,运行看右边(具体是哪个对象)。
在运行期,才决定父类引用指向的是哪一个子类对象,并执行子类的方法。
通过“接口实现”和“子类继承”都可以实现多态。