多态

多态

1.1 方法的多态

方法的的多态就是方法的重写和重载

用的不多

非重点

class Person {
   public void name () {
       
  }
   public void name(String name) {
       
  }
   //重载
}
class A extends Person {
   @Override
   public void name () {
       
  }
   //重写
}

class B extends Person {
   @Override
   public void name () {
       
  }
   //重写
}
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));

}
 
posted @ 2022-07-28 20:08  早睡晚起身体好  阅读(41)  评论(0)    收藏  举报