面向对象编程
三大特性
-
封装:是指利用抽象数据类型把数据和基于数据得操作封装起来,使其成为一个不可分割得完整体。数据隐藏在抽象数据内部,尽可能隐藏数据细节,只保留一些数据接口使其与外界发生联系。
封装得目的是增强安全性和简化编程,使用者不必了解具体得实现细节,而只要通过外部接口,以特定的访问权限来使用类得成员。
-
继承:Java不支持多继承,一个子类只能有一个父类。但父类可以有多个子类。
-
多态:多态同一个行为具有多个不同表现形式或形态能力。是指一个类实例化(对象)的相同方法在不同情形有不同的表现形式。
多态存在的三个条件:继承、重写、父类引用指向子类对象。
抽象
注意点:
- 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
- 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
- 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
- 构造方法、类方法(用static修饰的方法)不能声明为抽象方法。
- 抽象类的子类必须给出抽象类中的抽象方法的具体实现(重写),除非该类也声明为抽象类。
接口与抽象类的区别
- 抽象类的方法中可以有方法体,但接口中的方法不行。
- 抽象类的成员变量可以是各种类型的,而接口中的成员变量只能被public static final修饰。
- 接口中不能含有静态代码块与静态方法,而抽象类中可以有。
- 一个类只能继承一个类,但一个类可以实现多个接口。