zoukankan      html  css  js  c++  java
  • java-多态

    一句话:父类引用指向子类对象

    格式: 父类名称 对象名 = new 子类名称()
    或者
    接口名称 对象名 = new 实现类名称()

    public class Fu {
    	public void main() {
    		System.out.println("父类方法");
    	}
    	public void mainTest() {
    		System.out.println("父类特殊方法");
    	}
    }
    
    public class Zi extends Fu{
    	@Override
    	public void main() {
    		System.out.println("子类方法");
    	}
    }
    
    public class Mulituplate {
    	public static void main(String[] args) {
    		Fu objFu = new Zi();
    		objFu.main();
    		objFu.mainTest();
    	}
    }
    

    访问成员变量:
    直接通过对象名称访问成员变量,谁是对象,优先使用谁,没有则向上找。
    间接通过方法访问成员变量,方法属于谁,则优先使用谁,没有则向上找。
    重写了父类方法,就是50,不重写就是20。

    public class Fu {
    	
    	int num = 20;
    	
    	public void main() {
    		System.out.println("父类方法");
    	}
    	public void mainTest() {
    		System.out.println("父类特殊方法");
    	}
    }
    
    public class Zi extends Fu{
    	int num = 50;
    	@Override
    	public void main() {
    		System.out.println("子类方法");
    	}
    }
    
    
    //调用
    public class Mulituplate {
    	public static void main(String[] args) {
    		Fu obj = new Zi();
    		obj.main();
    		obj.mainTest();
    		System.out.println(obj.num); // 20
    
    	}
    }
    

    访问成员方法:
    看new的是谁,就优先用谁,没有则向上找。但是无法访问子类特有的成员。

    使用多态的好处:使左边的代码更加简单。无需修改

    对象的向上转型:(多态)

    父类引用指向子类对象。

    对象的向下转型:
    向上转型是安全的,但是无法访问子类特有的成员方法

    对象的向下转型一定要进行类型instanceof判断

    if (obj instanceof Fu) {
    			Zi zi = (Zi)obj;
    			zi.mianZi();
    		}
    
  • 相关阅读:
    PHP学习笔记(二)
    PHP开发笔记(一)
    PHP NOTE
    python windows进制文件可以直接下载使用
    深入浅出Hyper-V网络虚拟化技术
    深入浅出Hyper-V网络虚拟化(序)
    Windows Server 笔记(七):Windows Server 2012 R2 NIC Teaming(NIC组)
    Hyper-v Server 2012 R2增强会话模式
    Hyper-V动态迁移中?小心性能损失
    CLOUDSTACK FOR HYPER-V
  • 原文地址:https://www.cnblogs.com/lishi-jie/p/11726817.html
Copyright © 2011-2022 走看看