面向对象类和接口实现人拉门案例

162 阅读2分钟

本人已参与「新人创作礼」活动,一起开启掘金创作之路。

  • 类的创建及使用

类就是用于描述某一类事物,相当于市一个模板

定义一个类应该要有 属性和方法(所属的属性及方法一定是该类事物所共有的) 关键字class用于修饰一个类,

补充一下:类的访问权限修饰符:public、protected、default、private

public 使用对象:最广,类、接口、变量、方法

protected使用对象:变量、方法 注意:不能修饰类(外部类)

default 使用对象:类、接口、变量、方法。(即缺省,什么也不写)

private 使用对象:变量、方法 注意:不能修饰类(外部类)

普通修饰符:abstract、static、final

abstract使用对象:类、接口、方法

static 使用对象:类、变量、方法、初始化函数(注意:修饰类时只能修饰 内部类 )

final 使用对象:类、变量、方法

接口组装案例

需要注意的是:在实现接口中的方法的时候,接口的实现类中的重写方法 的修饰符必须是public,(以为接口中的方法默认的是public,而在类中,方法的默认访问权限是default,default的权限是在包内访问,其访问权限小于public,但是实现类的方法的访问权限不能低于其父类或者其父接口的相应方法的访问权限,所以程序是会报错的)

public class PersonPullDoorExample {
    public static void main(String[] args) {
        Scene s=new Scene();
        s.action();
    }
}

abstract  class Door{
    abstract void open();
}
class Door1 extends Door{
    public void open(){
        System.out.print("推拉门");
    }
}
class Door2 extends Door{
    public void open(){
        System.out.print("普通门");
    }
}
interface PullWay{
    void pull(Door door);
}
class PullWay1 implements PullWay{
    public void pull(Door door){
        System.out.print("单手拉");
        door.open();
    }
}
class PullWay2 implements PullWay{
    public void pull(Door door){
        System.out.print("双手拉");
        door.open();
    }
}
abstract class Person{
    abstract void openDoor(PullWay pullway,Door door);
}
class Man extends Person{
    public void openDoor(PullWay pullWay,Door door){
        System.out.print("男人");
        pullWay.pull(door);
    }
}
class Women extends Person{
    public void openDoor(PullWay pullway,Door door){
        System.out.print("女人");
        pullway.pull(door);
    }
}
class Scene {
    public void action(){
        Person person=new Women();
        PullWay pullWay=new PullWay1();
        Door door=new Door1();
        person.openDoor(pullWay,door);
    }
}