接口的成员特点 类和接口的关系 抽象类和接口的区别 运动员和教练案例

接口的成员特点

  • 成员变量

    只能是常量

    默认修饰符:public static final

  • 构造方法

    接口没有构造方法,因为接口主要是对对象进行抽象的,是没有具体存在

    一个类中如果没有父类,默认继承Object类

  • 成员方法

​ 只能是抽象方法

​ 默认修饰符:public abstrac


类和接口的关系

  • 类和类的关系

    继承关系,只能单继承,但是可以多层继承

  • 类和接口的关系

    实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

  • 接口的接口的关系

    继承关系,可以单继承,也可以多继承

package Demo8;

public interface Inter1 {
}
package Demo8;

public interface Inter2 {
}
package Demo8;

public interface Inter3 extends Inter1,Inter2{
}
package Demo8;

public class Intermpl extends Object implements  Inter1,Inter2,Inter3{
}

抽象类和接口的区别

  • 成员区别

    抽象类: 变量,常量,有构造法方法,也有非抽象方法

    接口: 常量;抽象方法、

  • 关系区别

    类与类 继承

    类与接口 实现,可以单实现,也可以多实现

    接口与接口 继承,单继承,多继承

  • 设计理念区别

    抽象类 对类抽象,包括属性,行为

    接口 对行为抽象,主要是行为

  • 抽象类是对事物的抽象,而接口是对行为的抽象

比如门具有开和关的功能,但是我们附加了一个报警的功能,但是有的门不具备报警的功能

所以 ,我们可以定义两个接口,一个门接口,一个报警接口,如果门具有报警和开关功能就用这个类去继承者两个接口,如果只有开关功能,那么只继承开关功能的接口


运动员和教练


需求:我们现在有乒乓球运动员和篮球运动运,乒乓球教练和篮球教练,为了出国交流,跟乒乓球相关人员都需要学习英语,

分析: 从具体到抽象

          1.  乒乓球运动员
          2.  篮球运动员
          3.  乒乓球教练
          4.  篮球教练

实现: 从抽象到具体


思路关系图

思路

  1. 定义说英语接口:成员方法:说英语
  2. 定义抽象人类: 成员变量:姓名年龄,set/get,吃饭();
  3. 定义抽象教练类,继承人类,无参,带参,成员方法,教();
  4. 定义抽象运动员类,继承人类,无参,带参,学习();
  5. 定义具体篮球教练类 ,继承教练类,无参,带参,成员方法,重写吃饭,重写教
  6. 定义具体乒乓球类,继承教练类 ,实现说英语接口,无参带参,重写吃饭,重写教,重写说英语;
  7. 定义具体篮球运动员类
  8. 定义具体乒乓球运动员类,,,,实现英语接口
  9. 测试类

package Demo9;

public class BaseketBallPlayer extends  player{
    public BaseketBallPlayer() {
    }

    public BaseketBallPlayer(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("篮球运动员吃鸡肉");
    }

    @Override
    public void study() {
        System.out.println("篮球运动员学习如何打篮球");
    }
}
package Demo9;

public class BasketballTeacher extends TeachMan{
    public BasketballTeacher() {
    }

    public BasketballTeacher(String name, int age) {
        super(name, age);
    }

    @Override
    public void teach() {
        System.out.println("篮球教练教如何打篮球");
    }

    @Override
    public void eat() {
        System.out.println("篮球教练吃羊肉和牛奶");
    }
}
package Demo9;

public class Human {
    private  String name;
    private  int age;

    public Human() { }

    public Human(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public void  eat(){
        System.out.println("吃饭");
    }
}
package Demo9;

public class PingPongPlayer extends  player implements  sayEnglish{
    @Override
    public void sayEnglish(){
        System.out.println("乒乓球运动员说英语");
    }

    public PingPongPlayer() {
    }

    public PingPongPlayer(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("乒乓球运动员吃土豆");
    }

    @Override
    public void study() {
        System.out.println("乒乓球运动员学习如何打乒乓球");
    }
}
package Demo9;

public class PingPongTeacher extends TeachMan implements  sayEnglish{
    public PingPongTeacher() {

    }

    public PingPongTeacher(String name, int age) {
        super(name, age);
    }

    @Override
    public void teach() {
        System.out.println("乒乓球教练教如何打乒乓球");
    }

    @Override
    public void eat() {
        System.out.println("乒乓球教练吃做肉和芹菜");
    }
    public void  sayEnglish(){
        System.out.println("乒乓球教练说英语");
    }
}
package Demo9;

public class player extends Human{
    public player() {
    }

    public player(String name, int age) {
        super(name, age);
    }
    public void study(){
        System.out.println("学习");
    }
}
package Demo9;

public interface sayEnglish {
    void sayEnglish();
}
package Demo9;

public class TeachMan extends  Human{
    public TeachMan(){}
    public TeachMan(String name ,int age){super (name,age);}
    public void teach(){
        System.out.println("教");
    }
}
package Demo9;

public class Application {
    public static void main(String[] args) {
        BaseketBallPlayer b =new BaseketBallPlayer("篮球运动员",20);
        PingPongPlayer p = new PingPongPlayer("乒乓球运动员",21);
        BasketballTeacher b1 = new BasketballTeacher("篮球教练",50);
        PingPongTeacher p1 =new PingPongTeacher("乒乓球教练",55);

        System.out.println(p.getName()+","+ p.getAge());
        p.eat();
        p.study();
        p.sayEnglish();
        System.out.println("---------------");
        System.out.println(p1.getName()+","+ p1.getAge());
        p1.sayEnglish();
        p1.eat();
        p1.teach();
        System.out.println("---------------");
        System.out.println(b.getName()+","+ b.getAge());
        b.eat();
        b.study();
        System.out.println("---------------");
        System.out.println(b1.getName()+","+ b1.getAge());
        b1.eat();
        b1.teach();

    }
}


乒乓球运动员,21
乒乓球运动员吃土豆
乒乓球运动员学习如何打乒乓球
乒乓球运动员说英语
---------------
乒乓球教练,55
乒乓球教练说英语
乒乓球教练吃做肉和芹菜
乒乓球教练教如何打乒乓球
---------------
篮球运动员,20
篮球运动员吃鸡肉
篮球运动员学习如何打篮球
---------------
篮球教练,50
篮球教练吃羊肉和牛奶
篮球教练教如何打篮球
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pofenx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值