1、方法重写
1.在继承关系中,方法名相同,参数列表也一样,覆盖或覆写
2.重载:方法名相同,参数列表不同
3.子类根据自己的需要,定义特定的自己的行为,即沿袭父类的功能名称,又跟据子类的的需要重新实现父类的方法,从而进行扩展增强
4、总结
1.父类和子类之间方法名相同,参数列表也相同
@Override写在方法前面,用来检查是否是有效的正确的覆盖重写
2.子类方法的返回值类型必须小于等于父类方法的返回值类型(小于其实就是它的子类)
java.lang.Object类是所有类的公共的最高父类(祖宗类),java.lang.String就是Object的子类
如果返回值类型时基本数据类型和void,那么必须相同
3.子类的方法的权限必须大于或等于父类方法的权限修饰符
public>protected>默认>private
4.几种特殊的方法不能重写
静态方法不能重写,私有等在子类中不可见的方法不能重写,final方法不能重写
5、Object类
toString()返回当前对象本身的相关信息,按字符串对象返回
equals()比较两个对象是否是同一个对象,是则返回true
6、多态
1.是指同一行为,具有多个不同变现形式
2.前提
继承父类或实现接口,方法的重写,父类引用指向子类对象
3.格式
父类类型 变量名=new 子类对象;
变量名.方法名();这个方法是父类中声明,子类中重写的方法
4.多态体现
编译时,看父类,只能调用父类声明的方法,不能调用子类扩展的方法
运行时,看子类,一定是执行子类重写的方法体
5.多态的好处
1. 在实际开发过程中,⽗类类型作为⽅法的形式参数, 传递⼦类对象给⽅法,进⾏⽅法的调⽤ ,更能体现 出多态的扩展性和便利性
7、抽象类
1.抽象:即不具体,或无法具体
2.抽象方法:没有方法的方法
3.抽象类:被abstract修饰的类
4. 语法
1. 抽象类
1. [权限修饰符] abstract class 类名{}
2. [权限修饰符] abstract class 类名 extends ⽗类{}
2. 抽象⽅法
1. [权限修饰符] abstract 返回值类型 ⽅法名([形参列表 ]);
1. 注意抽象⽅法,没有⽅法体
5. 继承抽象类的类,必须重写⽗类的抽象⽅法,否则,该⼦类 也必须声明为抽象类,最终,必须有⼦类实现该⽗类的抽象 ⽅法,否则,最初始的⽗类到最终⼦类都不能创建对象,就 失去了意义
7. 注意事项
1. 抽象类不能创建对象,如果创建,编译⽆法通过,会报 错,只能创建⾮抽象⼦类的对象
2. 抽象类中,可以有构造 ⽅法,是供⼦类创建对象时,初 始化⽗类成员变量的使⽤⽤的
3. 抽象类中,不⼀定包含抽象⽅法,但有抽象⽅法的类必 定是抽象类
4. 抽象类的⼦类,必须重写抽象⽗类的所有抽象⽅法,否 则编译⽆法通过,除⾮该⼦类也是抽象类
9. ⽗类与⼦之间的类型转换
1. 向上转型
1. 多态本⾝就是⼦类类型向⽗类类型(向上)转换的过 程,这个过程是默认,⽗类的引⽤,指向⼦类的对象, 这就是向上转型
2. 向下转型
1. ⽗类类型向⼦类类型转换的过程,这个过程是强制
2. ⼦类类型 变量名=(⼦类类型) ⽗类变量名;
3. Animal a=new Cat(); 向下转型 Cat c=(Cat) a;
4. 就是为了调⽤⼦类⾥特有的⽅法
10. instanceof
1. 为了避免ClassCastException的发⽣,给引⽤变量做类型校 验,只要⽤instanceof判断返回为true,那么强制类型转换就 是安全的,不会报错
2. 格式
1. 变量或对象名 instanceof 数据类型 如果属于就返回true, 否则返回false