18_多态

 


 

 1.概念


 

 2.格式


 

 3.前提


 

 4.多态与继承


 

5.多态的优缺点


 

 6.转型

 


 

 7.instanceof


 

8.代码实现

复制代码
package JavaBasicReview;

public class JavaGrammer {

    public static void main(String[] args) {
        //多态,父类引用指向子类对象(向上转型)
        Fu fu = new Zi();
        fu.methodFu();//可以访问父类中特有的方法
        fu.methodOne();//可以访问父类中被子类重写的方法
        System.out.println(fu.age);//可以访问父类的成员变量
        //System.out.println((fu.name);//无法访问子类成员变量
        System.out.println(((Zi) fu).name);//如果想访问子类成员变量,必须向下转型
        //fu.methodZi();//无法访问子类特有的方法
        ((Zi) fu).methodZi();//如果想访问子类特有方法,必须向下转型
        System.out.println(fu instanceof Zi);
        System.out.println(fu instanceof Fu);

        System.out.println("========继承============");
        Zi zi = new Zi();
        zi.methodFu();//可以访问父类特有的方法
        zi.methodOne();//可以访问父类中被子类重写的方法
        System.out.println(zi.age);
        System.out.println(zi instanceof Zi);
        System.out.println(zi instanceof Fu);

        System.out.println("====多态的应用========");
        //多态的应用,前期定义父类,后期使用子类,提高了代码的扩展性
        methodOne(new Zi());
        methodOne(new ZiOne());
    }

    public static void methodOne(Fu obj){
          obj.methodOne();
    }

}

class Fu {
    int age = 99;
    void methodFu(){
        System.out.println("Fu类中特有的方法");
    }
    void methodOne(){
        System.out.println("Fu类中被重写的方法");
    }
}

class Zi extends Fu {
   int age = 88;
   String name = "zi";

   void methodZi(){
       System.out.println("Zi类中特有的方法");
   }

    @Override
    void methodOne() {
        /*super.methodOne();*/
        System.out.println("被子类重写的方法,Zi类重写");
    }
}

class ZiOne extends Fu{
    @Override
    void methodOne() {
        /*super.methodOne();*/
        System.out.println("被子类重写的方法,ZiOne类重写");
    }
} 
复制代码

 

posted @   学而不思则罔!  阅读(171)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示