- 多态
- 一个事物呈现出不同的状态
- java中多态的体现
- 方法的重载(overload)
- 方法的覆盖(Override)
- 子类和父类的转型
- 类型转换
- 向上转型(上溯造型)
- 在继承中,子类对象可以转为父类对象
- 1、会丢失子类所独有的属性和方法
- 2、覆盖的方法,如果转型之后的父类对象调用被覆盖了的方法,执行的是子类中的重写的方法。
- 向下转型(下溯造型)
- 在继承中,父类类型的对象转为子类类型的对象
- 需要强制转换,不能自动发生
- 条件:只有经历了向上转型之后的父类对象才能向下转型,且只能转为原来的子类对象。
- 向上转型(上溯造型)
- instanceof
- 判断某个对象是否是某类的对象,如果是,返回true,如果不是返回false。
- 语法: 对象名 instanceof 类名
- 多态的三个条件
- 1、需要有继承关系
- 2、方法的覆盖(重写)
- 3、父类的引用指向子类对象(子类对象赋值给父类对象)
- abstract 抽象
- 修饰方法,称为抽象方法。
- 语法:修饰符 abstract 返回值类型 抽象方法名(参数列表);
- 抽象方法没有方法体,权限修饰符不能为private,final。
- 语法:修饰符 abstract 返回值类型 抽象方法名(参数列表);
- 修饰类,称为抽象类。
- 语法: 修饰符 abstract class 类名{}
- 注:
- 抽象类不能被实例化,也就是不能创建抽象类的对象。
- 抽象类中的方法,可以是任意方法。
- 抽象方法不能使用static修饰
- 在继承中,子类继承了抽象类,子类必须实现父类(抽象类)中所有的抽象方法。如果不能实现,子类定义为抽象类。
- 如果一个类中有一个抽象方法,则该类一定要定义为抽象类。
- 修饰方法,称为抽象方法。
- final 可以用来修饰变量,类,方法,表示不可改变的
- 修饰变量
- 修饰变量,表示变量的值不能改变,不能被重新赋值。
- 声明常量时,必须同时进行初始化赋值(也可以先声明,然后在所有的构造函数里初始化赋值)
- static与final连用来定义常量,叫静态常量
- 命名规范:由一个或多个英文单词组成,所有的字母大写,多个单词之间使用下划线隔开。
- 修饰方法
- 表示方法不能被覆盖(Override)
- 修饰类
- 表示类不能被继承
- 修饰变量
- 接口(interface)
- 接口是为了解决单一继承的局限性而提供的,子类只能继承一个父类,但可以同时实现多个接口,从而间接的实现了多重继承。
- 语法: 修饰符 interface 接口名{
- //
- }
- 注:
- 1、接口不是,不能实例化
- 2、接口中没有构造方法
- 3、接口中只能包含static final的常量与抽象方法
- 接口中的变量即使不写static final,编译器也认为是常量
- 接口中的方法,不写abstract,编译器也会认为是抽象方法
- 4、接口里的都是 public
- 一个类实现接口,使用关键字implements 实现
- public class 类名 implements 接口名1, 接口名2 {
- }
- public class 类名 implements 接口名1, 接口名2 {
- 即继承又实现接口
- public class 类名 extends 父类名 implements 接口名1, 接口名2 {
- }
- 接口的实现类必须实现接口里的所有方法
- public class 类名 extends 父类名 implements 接口名1, 接口名2 {
- 内部类
- 在类的内部,定义另外一个类,这个类称为内部类
- 为什么要使用内部类:
- 1、内部类对于同一个包下的其他类是不可见的。
- 2、如果想实现一个接口,但不需要指定名字,可以使用匿名内部类的方式实现。
- 成员内部类
- 在类中定义另外一个类,与成员变量和成员方法同级,称为成员内部类。
- 1、成员内部类可以访问外部类所有属性和方法
- 2、成员内部类的方法和外部类的方法重名时,内部类会覆盖外部类的方法
- 3、成员内部类使用四种权限修饰符。
- 4、外部类中访问内部类的成员变量或者方法,需要通过内部类的对象来访问。
- 5、创建内部类对象:
- 外部类.内部类 对象名 = 外部对象.new 内部类();
- 在类中定义另外一个类,与成员变量和成员方法同级,称为成员内部类。
- 局部内部类(很少用)
- 静态内部类
- 匿名内部类
- new 父类或接口名(){
- }
- new 父类或接口名(){
第十天0306 多态 abstract抽象 final 接口 内部类
最新推荐文章于 2024-07-28 19:11:58 发布