首页 > 代码库 > 多态&接口

多态&接口

多态

多态定义:允许一个父类变量引用子类的对象;允许一个接口类型引用实现类对象。

多态的调用:使用父类的变量指向子类的对象;所调用的属性和方法只限定父类中定义的属性和方法,不能调用子类中特有的属性和方法,

多态主要应用为多态参数和多态对象

package JobTest;

abstract class Job {
    public abstract void work();// 为了方便进行多态调用
}

class Teacther extends Job {
    @Override
    public void work() {
        System.out.println("上课");
    }
}

class Cookies extends Job {
    @Override
    public void work() {
        System.out.println("做饭");
    }
}

class Driver extends Job {
    @Override
    public void work() {
        System.out.println("开车");
    }
}

package JobTest;

public class JobTest {

    public static void main(String[] args) {
        Job a=new Teacther();//父类类型变量a指向子类对象teacther
        Job b=new Cookies();//父类类型变量b指向子类对象Cookies
        Job    c=new Driver();//父类类型变量c指向子类对象Driver
        a.work();
        b.work();
        c.work();
    }

}

以上实例是简单使用多态实例,父类Job分别使用变量指向子类对象Teacher/Cookies/Driver;

如果一个类继承抽象类,那么必须重写抽象类中所有抽象方法(@Override)

接口

接口可以看做抽象类的特例

接口中只能定义抽象方法,接口可以看做行为的抽象。

接口中的方法只能是public

接口中变量为public static final

public interface Iwash {
public abstract void wash();
}

class Mun implements Iwash{

    @Override
    public void wash() {
        System.out.println("手洗");
        
    }

}

class Washer implements Iwash {

    @Override
    public void wash() {
        System.out.println("电机搅动");

    }

}
public class TestWash {

    public static void main(String[] args) {
        Iwash w = new Mun();
        w.wash();

    }

}

实例中建立一个Iwash接口,Mum和Wash都有wash这个行为,所以都有Iwash接口

接口用于在不同的类实例当中,共享通用行为,重用方法。

接口和多态的概念不是很难,但是在于灵活运用。

多态&接口