重写
重写是子类对父类允许访问方法的实现过程进行重新编写,方法头不能改变,方法体重新编写
注意:方法实现过程中会出现异常,抛出异常;所以子类抛出方法的异常不能比父类更大
重写的规则
- 方法名,参数列表,返回类型都要相同。
- 访问的权限,不能比父类更严格。
Public --protected--default--private
- final的方法和static的方法不能重写
- 子类方法抛出的异常不能比父类大
- 构造方法不能被继承,构造方法不能被重写
Super:调用父类的属性和方法
重载
方法名相同,参数列表相同,与方法其他的无关
重写和重载的区别
操作方法(修饰符,返回类型,方法名,参数列表,方法体)
重写 重载
访问修饰符 不能比父类更严格 可以改
返回类型 不能修改 可以该
方法名 不能 不可以
参数列表 不能 一定要改
方法体 可以 可以改
多态:多种表现的形式,形态。
方法的重写和重载是Java多态的不同表现
重载是本类的方法的多态表现
重写是父类与子类的多态表现。
抽象类
不是为了创建对象,为了扩展其他类设计的,让子类进行继承。
其他的特点与普通类一样。一般在设计阶段设计抽象类。
- 抽象类不能实例化,通过抽象类的非抽象子类可以创建对象
- 抽象类中抽象方法不能有方法体,只能通过子类重写实现
- 子类必须重写抽象方法 ,除非子类是抽象类
- 构造方法,static类方法不能声明为抽象方法。
- Final和static不能修饰abstract;
接口
一个抽象类中的方法都是抽象方法.属性都是类变量。
纯抽象 定义成 接口。
接口里面全部都是抽象方法。通过子类继承接口,实现接口中的抽象方法
接口的语法:[可见度访问修饰符] interface 接口名{
//声明变量
//抽象方法
}
子类继承接口:class 类 implements 接口,接口{ 抽象方法 }
接口中变量默认是常态
接口中方法默认是公共的抽象方法
接口中无构造方法
接口和抽象类的区别:
- 抽象类有普通方法,有方法体。接口中方法都是抽象方法,没有方法体
- 抽象类中有成员变量,接口中变量只能是public static final修饰,静态变量
- 接口不能含有构造器,不能有final,不能有静态代码块和静态修饰的方法。抽象类有普通方法可用静态修饰,可用静态代码块。
- 一个类只能继承一个抽象类,一个类可以继承(实现)多个接口。
- 抽象类的抽象方法的修饰符public protected;接口的方法修饰符 public
接口的多继承
Interface 接口 extends 接口1,接口2{}
接口作为标记作用。
标记接口
标记接口中无任何的方法,作用做标记。
比如:Java.awt.event
mouseListener 继承标记接口 EvenListener
EvenListener 就是标记接口
只要继承了 EvenListener 接口就是监听接口
面向接口编程
接口的扩展性很强
耦合度不高。
Java多态
多态是同一个方法具有多个不同表现形式或者形态
多态的优点:
- 消除类型之间耦合关系,耦合度低
- 灵活,简化,替换性(替换子类对象)
- 扩展,扩充(增加实现子类)
- 接口性。(接口特点)
实现多态三个条件:
- 继承关系
- 子类重写父类的方法
- 父类变量引用子类对象
父类 变量 = new 子类对象