Java多态(一)

父类:
public class Parent {

    public String name;
    private String pass;
    
    public void say1(AA aa){
        
        System.out.println("parent say1");
    }
    @SuppressWarnings("unused")
    private void eat(){
        System.out.println("parent eat");
    }
    public String getPass() {
        return pass;
    }
    public void setPass(String pass) {
        this.pass = pass;
    }
}
子类:
public class Child extends Parent{
    
    public static void main(String[] args) {
        AA a = new AA();
        
        /**
         * 向上转型:程序运行调用某一方法时,先查看Parent类是否有调用的方法,
         * 若有则就去调用子类中的方法,若父类没有此方法,则编译错误。
         * 
         */
        Parent p = new Child();
        p.say1(a);
        
        /**
         * 向下转型,编译和运行皆不会出错,这里的向下转型是安全的。
         */
        Child child = (Child) p;
        child.say1(a);
        child.say2(a);
        
        /**
         * 向下转型,编译无错,运行时报错: java.lang.ClassCastException
         * 不安全的向下转型。
         */
        //Parent p2 = new Parent();
        //Child c2 = (Child) p2;
        //c2.say1(a);
    }
    
    public void say1(AA aa){
        
        System.out.println("Child say1");
    }
    
    public void say2(AA aa){
        
        System.out.println("Child say2");
    }
}

class AA {
    public void sys() {
        System.out.println("A is"); 
    }
}

class BB extends AA{
    public void sys() {
        System.out.println("B is"); 
    }
}

 

posted @ 2015-03-28 10:51  High阔天空  阅读(199)  评论(0编辑  收藏  举报