面向对象编程的本质是以类的方式组织代码,以对象的组织(封装数据)。
面向对象比较抽象。
面向对象的三大特性:封装、继承、多态
封装:高内聚、低耦合,将程序的代码封装起来,将该显示的显示出来,不该显示的隐藏起来,提高系统的安全性,提供一个接口给用户调用,提高程序的可维护性。属性私有,并且有公有的get/set方法。
继承:继承是对类的抽象,实现 对现实世界的更好建模。
1、使用关键字extends来继承类,类只能单继承。
2、子类有父类的所有属性和方法,子类还可以定义自己的方法和属性,私有的属性和方法无法继承。
3、子类使用supper来调用父类的属性,使用this来调用本类的属性。调用父类构造器必须放在子类的第一行,一般默认调用。super和this不能同时调用构造方法。
4、子类可以重写父类的方法。
5、java中的所有类都默认继承object类。(在idea中使用ctrl+h可以查看继承树)
多态:是方法的多态,属性没有多态,父类和子类有联系(父子类转换异常--ClassCastException),存在的条件(继承关系、方法需要重写),父类的引用指向子类的对象。
类与对象的关系:
类是一种抽象的数据类型,他是对某事物的整体描述/定义,但是并不能代表具体的事务,例如动物、植物等。类默认会存在一个无参构造方法。
对象则是抽象类的具体表现、比如旺财就是狗的一个具体实例。使用new关键字创建对象,本质就是在调用构造器,构造器的作用是用来初始化数据。
重写:需要有继承的关系,子类重写父类的方法,方法名必须相同,列表参数必须相同、修饰符可以扩大不能缩小、异常的抛出可以缩小不能放大。
不能重写的情况:被static、final、private修饰的类不能被重写。
接口的作用:
1、约束
2、定义方法让其他类实现
3、public abstract
4、public static final
5、接口不能实例化、没有构造器
6、implements可以实现多个接口
7、接口中的方法必须重写。