栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java多态

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java多态

 

多态性其实就是方法调用的机制,也就是说当在编译时无法确定一个对象的实际类型时,应当能够在运行时基于对象的实际类型来决定调用的具体方法(动态绑定)。

问题

现在有 A B C 三个类 我们如果想要把ABC三个对象都进行传递 这个时候该如何表示呢? 只需要传递时类型规定为三个类共同的父类即可

使用多态

可以实现面向对象的开闭原则 开闭原则: 在程序中我们一般 对扩展进行开放 对修改进行关闭

多态分类

向上转型 【多态】 父类 f=new 子类() 父类引用指向子类对象

向下转型 【还原】 子类 z=(子类)f 向下转型是不安全的 可能出现类型转换错误

使用场景: A、传参 B、返回值

instanceof:对于类型的判断

注意:

    多态是方法的多态,不是属性的多态(多态与属性无关)。

    多态的存在要有3个必要条件:继承/实现,方法重写,父类引用指向子类对象。

    多态可用的方法一般是子父共有的

多态的表现形式

成员变量 编译看左侧 运行看左侧 //变量没有多态

非静态方法 编译看左侧 运行看右侧----->多态

静态方法 编译看左侧 运行看左侧 //静态绑定无需多态

public class Fu {
​
     public   int  a=10;
     public static   int   b=20;
     public  final   int  c=30;
     public   void  aa(){
         System.out.println("父类中aa");
     }
     public   static   void  bb(){
         System.out.println("我是父类中bb");
     }
     public   void  cc(){
         System.out.println("我是父类中cc");
     }
​
}
​
public class Zi extends  Fu {
​
    public   int  a=100;
    public static   int   b=200;
    public  final   int  c=300;
    public   int   d=400;
    public   void  aa(){
        System.out.println("子类中aa");
    }
    public   static   void  bb(){
        System.out.println("我是子类中bb");
    }
    public   void  dd(){
        System.out.println("子类中dd");
    }
}
public static void main(String[] args) {
       
          
          Fu  f=new Zi();
         // System.out.println(f instanceof Zi)
          System.out.println(f.a);
          System.out.println(f.b);
          System.out.println(f.c);
          //System.out.println(f.d); 报错 编译看左侧
          f.aa();
          //f.dd();//报错非静态方法 编译看左侧
          f.bb();
          f.cc();
    
}
//10
//20
//30
//子类中aa
//我是父类中bb
//我是父类中cc
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759766.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号