3-5、多态性
2023-12-13 04:42:38
    		1、多态类型
- 编译时多态:方法重载 
  - 在编译阶段就已经确定要调用哪个重载的方法
 
- 运行时多态:方法重写 
  - 具体调用哪个子类的方法要到运行的时候,结果才能确定,多态只针对行为(方法)
 
2、上下转型
- 向上转型 
  - 上转型对象只能调用父类定义了的变量和方法,子类新增的变量和方法访问不到的
- 但可以访问子类重写父类的方法。(多态只针对方法)
 
- 向下转型 
  - 向下转型对象可以访问父类里的属性、方法,
- 同时也可以访问子类新增的属性、方法。
 
public class Cat {
    public String name;
    public void eat(){
        System.out.println("Cat.eat()");
    }
}
public class YeCat extends Cat{
    public int age;
    public void eat(){
        System.out.println("YeCat.eat()");
    }
}
public class HomeCat extends Cat{
    public int age;
    public void eat(){
        System.out.println("HomeCat.eat()");
    }
}
public class Main {
    public static void main(String[] aaa) {
        // 向上转型
        Cat yeCat = new YeCat();
        // 向上转型可以访问子类重写的方法
        yeCat.eat();
        // 报错,向上转型不可以访问子类新增的属性和方法
//        System.out.println(yeCat.age);
        Cat cat = new HomeCat();
        // 向下转型
        HomeCat homeCat = (HomeCat) cat;
        homeCat.eat();
        System.out.println(homeCat.age);
    }
}
3、instanceof
- 用来检测某个对象是否是某个类的对象,结果是boolean值
        Cat cat = new HomeCat();
        // 强转能成功
        HomeCat homeCat = (HomeCat) cat;
        // 类型强转错误,HomeCat cannot be cast YeCat
        YeCat yeCat = (YeCat) cat;
        if (cat instanceof HomeCat){
            HomeCat home = (HomeCat) cat;
        } else if (cat instanceof YeCat){
            YeCat ye = (YeCat) cat;
        }
    			文章来源:https://blog.csdn.net/sinat_35615296/article/details/134955472
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
    	本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!