Java基础(面向对象三)

接口:

  抽象方法本质上时是定义接口规范:规定高层的接口,保证所有子类都能通过相同的接口(方法名)实现,以此发挥多态的优势。

  如果一个抽象类没有字段,所有方法都是抽象方法,就可以把该抽象方法定义成接口(interface)。

  接口定义的类中不能有字段,接口中定义的所有的方法默认都是public abstract。

  当一个class需要继承接口时,使用implements关键字。

  一个class可继承多个接口。

  一个接口继承另一个接口时用extends。

  在继承接口的类中,接口中定义的所有方法都必须被重写,所以一旦修改接口中定义的方法,所有子类都需要修改。

  定义default修饰的方法则不需要子类重写(可以重写,但不是必须)。

//主程序
public class Demo {
    public static void main(String[] args) {
        /*Person[] arr = {
                new Student("张晓伟"),
                new Worker("王楠楠"),
                new Student1_2("田尔雅")
        };
        for(Person p:arr){
            p.run();
            p.eat();
            System.out.println(p.getName());
        }*/

        Student1_2 stu = new Student1_2("田尔雅");
        stu.eat();
        stu.getName();
        stu.person1Run();
        stu.person2Run();
        stu.run();


    }
}

//接口一
interface Person {
    default void eat(){
        System.out.println("eat something");
    }
    void run();
    //public abstract
    String getName();
}
//class1
public class Student implements Person {
    private String name;
    public Student(String name){
        this.name = name;
    }
    @Override
    public void run(){
        System.out.println(this.name+".run,一个学生在跑步");
    }
    @Override
    public String getName(){
        return name;
    }
}
//class2
public class Worker implements Person {
    private String name;
    public Worker(String name){
        this.name = name;
    }
    @Override
    public void run(){
        System.out.println(this.name+".run,一个工人在跑步");
    }
    @Override
    public String getName(){
        return name;
    }
}
//接口1_2
interface Person2 extends Person {
    void person2Run();
}

//接口2
interface Person1 {
    void person1Run();
}

 

  

  

 

posted on 2019-07-26 10:56  南华  阅读(94)  评论(0编辑  收藏  举报