面向对象三
面向对象特征
封装
封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问, 而是通过该类提供的方法来实现对隐藏信息的操作和访问
继承
继承:继承是面向对象程序设计不可缺少的设计思想,是实现代码可重 用的根基,是提高代码可扩展性的主要途径。
-
继承是从已有的类中派生出新的类,新的类能吸收已有类的属性和行为, 并能扩展新的能力。
-
在JAVA中使用extends关键字来表示继承关系。
-
JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个 直接父类。
-
继承之后子类可以调用父类的所有非私有属性和非私有方法
格式
访问权限修饰符 [修饰符] 子类名 extends 父类名{子类体}
继承中的构造方法
-
子类构造方法会先调用父类构造方法
-
使用super关键字调用父类任意一个构造方法,必须写在构造方法的第一行
-
如果子类的构造方法中没有显式地调用基类构造方法,则系统默认调用基类无 参数的构造方法
super关键字
使用super关键字访问父类成员
-
用super。成员变量名来引用父类成员变量
-
用super。方法名(参数列表)访问父类的方法
-
用super.构造方法(参数列表)访问父类构造方法
方法的重写
当父类的方法实现不能满足子类需求时,可以对方法进行重写
方法重写规则
-
方法名相同、参数列表相同
-
返回值类型相同
-
访问权限不能小于父类权限;
抽象类
抽象方法
-
抽象方法是一种特殊的方法:它只有声明,而没有具体的实现.
-
抽象方法必须用abstract关键字进行修饰.
多态
概念
条件
-
要有继承关系 类继承类,类继承抽象类 类实现接口
-
要有方法重写
-
父类的引用指向子类对象
语法
-
(针对非静态成员方法:编译看左边,运行期间看右边)
-
(针对静态方法,编译和运行都看左边)
-
(针对成员变量,编译和运行都看左边)
优缺点
优点:父类引用表示子类对象,提升程序的扩展性
缺点:父类不能调用子类特有的方法
多态转型
自动转型:子 继承 父
向上转型 子类型自动转型为父类型
强制转换:向下转型 父类转换为子类自己的类型(但是如果是不同子类转换会发生错误,所以使用instanceof关键字判断实际传入类型)
父类引用 instanceof 具体的子类型
返回false或者true
接口
接口类似于抽象类(可以看作是一个更彻底的抽象类)
接口和抽象类 都都是用于在顶层,指定规范
jdk8之前接口只能定义静态方法和抽象方法
jdk8之后 接口增加了静态方法和抽象方法
接口中声明的属性默认为public static final的,接口中没有构造方法,不能创建对象
interface 修饰的是接口
子类通过implement实现接口
一个接口可以继承多个接口
一个类可以实现多个接口,一个类只能直接继承一个类