Java学习笔记(二)——多态

多态:

  • 多态的体现:
    父类的引用指向了自己的子类对象。
    父类的引用也可以指向接收自己的子类对象。

  • 在多态中成员函数的特点:
    在编译时期:参阅引用型变量所属的类中是否有调用的方法,如果有编译通过,如果没有编译失败;
    在运行时期:参阅对象所属的类中是否有调用方法。

补充:instanceof方法用于判断所属类型


代码示例 1

abstract class Animal{
    public abstract void eat();
}
class Cat extends Animal{
    public void eat() {
        System.out.println("吃鱼");
    }
    public void catchMouse(){
        System.out.println("抓老鼠");
    }
}
class Dog extends Animal{
    public void eat() {
        System.out.println("吃骨头");
    }
    public void kanjia(){
        System.out.println("看家");
    }
}
/*class Do{
    public void function(Animal a){
        a.eat();
    }
}
*/
class 多态 {
    public static void main(String[] args){
        Animal c=new Cat(); //向上转型 
        //c instanceof Animal 判断c是否所属于Animal
        c.eat();
        Cat a=(Cat)c;       //向下转型
        a.catchMouse();
        /*多态对相同事物的抽取
        Do d=new Do();
        d.function(new Cat());
        */
    }
}

代码示例 2

/*
需求:电脑运行基于主板。
*/
interface PCI{
    public void open();
    public void close();
}
class MainBoard{
    public void run(){
        System.out.println("MainBoard Run!");
    }
    public void usePCI(PCI p){
        if(p!=null){
            p.open();
            p.close();
        }
    }
}
class NetCard implements PCI{
    public void open(){
        System.out.println("NetCard open!");
    }
    public void close(){
        System.out.println("NetCard close!");
    }
}
class SoundCard implements PCI{
    public void open(){
        System.out.println("SoundCard open!");
    }
    public void close(){
        System.out.println("SoundCard close!");
    }
}
class 多态示例 {
    public static void main(String[] args){
        MainBoard mb=new MainBoard();
        mb.run();
        mb.usePCI(null);
        mb.usePCI(new NetCard());
        mb.usePCI(new SoundCard());
    }
}

你可能感兴趣的:(Java,多态,java,封装,类,class)