多态
多态
1.1 方法的多态
方法的的多态就是方法的重写和重载
用的不多
非重点
class Person {
public void name () {
}
public void name(String name) {
}
//重载
}
class A extends Person {
1.2 对象的多态【重点】
对象的多态就是父类的引用指向子类的对象
Person person = new A ();
Person person = new B ();
注意事项
1.必须有继承
2.必须有重写
3.等号左边是父类的引用 等号右边是子类的对象
1.3 多态的转型【重点】
1.3.1 多态的向上转型
多态的向上转型本质就是父类的引用指向子类的对象
语法格式
父类 父类引用 = new 子类();
父类的引用可以调用父类所有的成员方法 也可以调用子类重写父类的方法 但是子类独有的方法不能调用
1.3.1 多态的向下转型
多态的向下转型本质就是父类的引用赋值给子类
语法格式
父类 父类引用 = new 子类();
子类 子类引用 = (子类)父类引用
1.4 instanceof 关键字
语法格式
对象引用 instanceof 运行类型
用来对象引用是否是运行类型的相同类型或子类
可以用辈分比较
左边辈分不大于右边辈分为true
左边辈分大于右边辈分为false
为的是不在强转是出现问题
提前用if语句判断
class A {}
class B {
public static xixi(Object obj) {
if(obj instanceof String) {
String string = (String)obj;
return "传给我的 参数是字符串类型的数据";
} else if (obj instanceof Integer) {
Integer i1 = (Integer)obj;
return "传给我的 参数是int类型的数据";
} else {
return "参数不合法";
}
}
}
public class Demo3 {
public static void main(String[] args) {
B b = new b ();
sout(b.xixi("狗蛋"));
sout(b.xixi(98));
}