1. 方法的覆盖、 方法的重写。
属性有覆盖吗? 没有!!!
子类继承父类的时候,子类可以覆盖父类的方法。
方法名相同,参数列表相同,返回值相同
叫方法的覆盖
- 返回级别,子类 >= 父类
-
@Override ; 验证方法是否是覆盖
-
super.fly(); 当前对象的父类的fly()方法
-
属性没有覆盖
public class Bird {
public void fly() {
System.out.println("飞行");
}
}
public class QQ extends Bird{
// 重载
public String fly(int i) {
System.out.println("太短了,海里游");
return "";
}
@Override // 验证代码是不是override重写,覆盖
public void fly() {
System.out.println("override太短了,海里游");
}
}
2. 多态:
2.1 理论的理解
- 多态: 一种事物多种形态。
逛街, 看到 一个美女, 带了一只 猫。
逛街, 看到 一个美女, 带了一只 宠物。
美女 猫(无毛, 橘猫,。。。)
看到一只狗在撒尿。
狗: 哈士奇,阿拉斯加,萨摩,。。。
人吃肉
肉 (猪牛羊。。)
2.2 代码上的理解:
变量的类型是父类的类型, 真实对象是 子类的对象。 调用的方法是 真实子类覆盖的方法.
编译时的类型,运行时类型
多态发生在继承的方法的覆盖
代码的形式上都是多态
父类 变量 = new 子类();
public 父类 void aaaAA(父类 参数) {
return new 子类()
}
aaaAA(new 子类())
多态1;
Bird b = new QQ();
b.fly(); // ??? 子类覆盖的方法
QQ q = (QQ)b;
System.out.println(b.name); // ???属性没有覆盖
System.out.println(q.name); // ???属性没有覆盖
多态2:
// 覆盖的方法— 只关心猫的被撸的行为,不关系具体是哪种猫
cat.played();
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S8r7x5Np-1605748312973)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1603431883845.png)]
package com.etc.lesson06;
public class Cat {
public void played() {
System.out.println("cat类的 喵");
}
}
class OraCat extends Cat {
@Override
public void played() {
System.out.println("橘色猫的 喵喵喵喵");
}
}
class NomaoCat extends Cat {
@Override
public void played() {
System.out.println("无毛猫的 --无视---");
}
}
package com.etc.lesson06;
public class BeautyGirl {
// 依赖关系use a 参数关系
public void play(Cat cat) {
System.out.println("美女开炉");
// 覆盖的方法--- 只关心猫的被撸的行为,不关系具体是哪种猫
cat.played();
}
}
package com.etc.lesson06;
public class TestMain3 {
public static void main(String[] args) {
// 多态
Cat c1 = new OraCat();
BeautyGirl bg = new BeautyGirl();
bg.play(c1);
bg.play(new NomaoCat());
}
}
定义类覆盖toString
Student stu = new Student(); @overid toString(){return “自定义”}
System.out.println(stu); // obj.toString();
3 两个类的关系
has a/user a
has a: 强关系,关联关系, 属性关系。
use a: 弱关系, 依赖关系, 参数关系。
is a: 继承关系
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lhBv2SCT-1605748312977)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1603441471115.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vv6urjMH-1605748312981)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1603441500129.png)]
4. instanceof
对象 instanceof 类型
返回boolean值: 对象是否是 类型的类
// 防止类型转换异常
if (wuqi instanceof JiuChiDingPaf) {
JiuChiDingPa jcdp = (JiuChiDingPa) wuqi;
} else if (wuqi instanceof DingHaiShenzhen) {
DingHaiShenzhen dhsz = (DingHaiShenzhen) wuqi;
}