面向对象是一种设计思想,强调的是具备功能的对象,让对象调用方法解决问题。
思想的特点
1、让复杂的事情简单化;
2、更符合人类的思维需求;
3、由执行者变成指挥者;
三大特征:封装,继承,多态
封装
隐藏对象的属性和实现方式,仅对外提供公共访问的方式
好处:1、安全 2、提高代码复用性 3、便于使用
继承
当多个类有有很多共同内容的时候,可以把这些共性的内容抽取出来封装成一个类,让这些类与这个封装的类产生关系,这种关系就是继承。
如果B类继承于A类,则A类叫做B类的父类,B类叫做A类的子类。子类继承了父类的所有属性和方法,子类可以拓展自己的属性和方法
继承的特点
java 类只支持单继承,但能够多层次继承;接口支持能单继承也能多继承;
继承的优缺点
优点:1、提高代码复用性;2、提高代码维护性;3、提高代码扩展性;4、让类与类之间产生关系;
缺点:增强了类与类的耦合性;
抽象类的特点
1、抽象方法只能定义在抽象类中,抽象方法和抽象类必须有abstract关键字修饰;
2、抽象方法只能定义方法声明,并不定义方法实现;
3、抽象类不可以创建实例对象;
4、只有通过子类继承抽象类并覆盖了抽象类中的所有方法后,该子类才能实例化,否则子类还是一个抽象类;
5、抽象类只能单继承;
抽象类和接口的区别
1、抽象类只能被继承,而且只能单继承;接口需要被实现,可以多实现。
2、抽象类中可以定义非抽象方法,子类可以直接继承使用。接口中都有抽象方法,需要子类去实现。
3、抽象类定义的是该继承体系的共性功能,接口定义的是该体系的拓展功能;
4、抽象类的成员变量修饰符可以自定义。接口中的成员修饰符固定是public;
多态
对象在不同时刻表现出来的多种状态。是一种编译时期状态和运行时期状态不一致的现象。
成员变量:编译看左边,运行看左边。
成员方法:编译看左边,运行看右边。因为,普通成员方法可以重写,变量不可以。
静态方法:编译看左边,运行看左边。
前提:类与类之间要有继承关系。要有方法的重写。父类引用指向子类对象