• 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();
    		}
    
  • 相关阅读:
    安卓-登陆页面的实现
    异常
    实用类
    Hashset
    Map
    LinkedList
    arraylist
    继承
    字符串相关代码
    数组代码
  • 原文地址:https://www.cnblogs.com/lishi-jie/p/11726817.html
Copyright © 2020-2023  润新知