java面向对象——多态

多态

public class Fu {
    int a=1;
    public void methed(){
        System.out.println("这是父类");
    }
}
public class Zi extends Fu{
    int a=2;
    public void methed(){
        System.out.println("这是子类");
    }
}
public interface JiDu {
    public abstract void jidu();
}
public class Pig implements JiDu{
    public void jidu(){
        System.out.println("缉毒炜在缉毒");
    }
}

public class Tset {
    public static void main(String[] args) {
        //普通类的多态:父类类型 变量名=new 子类类型();
        //多态中的成员变量特点    编译运行看左边
        //1.编译时期看父类是否有该成员变量,有编译成功,没有,编译失败
        //2.运行时期的结果走父类成员变量的值
        //多态中的成员方法特点      编译看左边  运行看右边
        //1.编译时期看父类是否有该成员方法,有编译成功,没有,编译失败
        //2.运行时期的结果是调用子类重写后的方法
        Fu f=new Zi();
        System.out.println(f.a);
        f.methed();
        JiDu j=new Pig();//向上转型 :父类类型 变量名=new 子类类型();
        j.jidu();
        System.out.println(j instanceof Pig);
        //前提需要先有向上转   向下转型:子类类型 变量名=(子类类型) 父类引用变量;   可以调用自己独有的变量和方法
        //Person p=(Person)a;
    }
}


public abstract class Animal {
    public abstract void eat();
} 
public class Dog extends Animal{

    public void eat() {
        System.out.println("狗吃屎");
    }
    public void lookhome(){
        System.out.println("看家");
    }
}
public class Test {
    public static void main(String[] args) {
        Animal dog=new Dog();
        dog.eat();
        //调用自己独有的方法
        method(dog);
}
    public static void method (Animal an){
        if(an instanceof Dog){
            Dog d=(Dog)an;
            d.lookhome();
        }else if(an instanceof Cat){
            Cat c=(Cat)an;
            c.pu();
        }
    }
}

 

posted @ 2019-01-02 16:33  帅涛  阅读(117)  评论(0编辑  收藏  举报