2022/10/26 OR 27 关于java的接口初识 猫狗接口/教练学员案例

接口的特点:

接口的关键字

public interface 接口名()

类实现接口的关键字

public class 类名 implements 接口名()

 接口的实现参照多态抽象类多态,接口多态

一般以Impl结尾为接口的实现类 

例如: interImpl

 

接口内变量默认被final修饰 ,内容只能是常量

int num3 = 30  
//在接口内这样写就等于了 public static final int num3 =30

皆相同 

//在接口内变量

public final int num2 = 20;
int num2 = 20;

//在接口内方法
public abstract void methods();
void methods();

猫和狗(接口版)

Animal

package 猫和狗接口版;

public abstract class Animal {
    private String name;
    private int age;

    public Animal() {
    }

    public Animal(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 abstract void eat();
}

AnimalDemo

package 猫和狗接口版;

/**
 * 测试类
 */
public class AnimalDemo {
    public static void main(String[] args) {
        Jumpping j = new Cat();
        j.jump();
        System.out.println("--------------");

        Animal a = new Cat();
        a.setName("加菲");
        a.setAge(5);
        System.out.println(a.getName()+","+a.getAge());
        a.eat();
        System.out.println("-------------------");


        a = new Cat("加菲",5);
        System.out.println(a.getName()+","+a.getAge());
        a.eat();
        System.out.println("---------以下是真正使用------------");

        Cat c = new Cat();
        c.setName("加菲");
        c.setAge(5);
        System.out.println(a.getName()+","+a.getAge());
        c.jump();
        c.eat();

        System.out.println("----------以下为狗------------------");
        Dog d = new Dog();
        d.setName("皮皮");
        d.setAge(10);
        System.out.println(d.getName()+","+d.getAge());
        d.jump();
        d.eat();

    }
}

Cat

package 猫和狗接口版;

public class Cat extends Animal implements Jumpping {
    public Cat() {
    }

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

    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }

    @Override
    public void jump() {
        System.out.println("猫可以跳高了");
    }
}

Dog

package 猫和狗接口版;

public class Dog extends Animal implements Jumpping {
    public Dog() {
    }

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

    @Override
    public void eat() {
        System.out.println("狗吃骨头");
    }

    public void jump() {
        System.out.println("狗可以跳高了");
    }
}

Jumpping接口

package 猫和狗接口版;

public interface Jumpping {
    void jump();
}

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

-------------------------------------------- 

运动员与教练的接口练习

接口SpeakEnglish

package 运动员和教练案例;

public interface SpeakEnglish {
    void speak();
}

 接口内void speak = public abstract void speak

------------------------------------------------------------------------------------------------

Person构造函数(抽象类)

package 运动员和教练案例;
//抽象人类
public abstract class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(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 abstract void eat();
}

Coash类 (抽象继承了Person

package 运动员和教练案例;

public abstract class Coach extends Person {
    public Coach() {
    }

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

    public abstract void teach();
}

Player运动员类同上

package 运动员和教练案例;

public abstract class Player extends Person {
    public Player() {
    }

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

    public abstract void study();
}

BasketballCoash篮球教练

package 运动员和教练案例;

public class BasketballCoach extends Coach {
    public BasketballCoach() {
    }

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

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

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

BasketballCoash篮球运动员

package 运动员和教练案例;

public class BaskerBallPlayer extends Player {
    public BaskerBallPlayer() {
    }

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

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

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

乒乓球教练

package 运动员和教练案例;

public class PingBangCoach extends Coach implements SpeakEnglish {
    public PingBangCoach() {
    }

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

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

    @Override
    public void eat() {
        System.out.println("乒乓球教练吃小白菜");
    }

    @Override
    public void speak() {
        System.out.println("乒乓球教练说英语");
    }
}

乒乓球运动员

package 运动员和教练案例;

public class PingBangPlayer extends Player implements SpeakEnglish {
    public PingBangPlayer() {
    }

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

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

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

    @Override
    public void speak() {
        System.out.println("乒乓球运动员说英语");
    }
}

PersonDemo测试类(利用多态

package 运动员和教练案例;

/**
 * 测试类
 */
public class PersonDemo {
    public static void main(String[] args) {
        //PingBangPlayer设置成了非抽象类
        //乒乓球运动员
        PingBangPlayer ppp = new PingBangPlayer();
        ppp.setName("帅哥");
        ppp.setAge(30);
        System.out.println(ppp.getName()+","+ppp.getAge());
        ppp.eat();
        ppp.study();
        ppp.speak();
        System.out.println("--------------");
        //篮球运动员
        BaskerBallPlayer bp = new BaskerBallPlayer();
        bp.setName("姚明");
        bp.setAge(50);
        System.out.println(bp.getName()+","+bp.getAge());
        bp.eat();
        bp.study();
        System.out.println("---------------");
        //篮球教练
        BasketballCoach bpc = new BasketballCoach();
        bpc.setName("姚明的教练");
        bpc.setAge(50);
        System.out.println(bpc.getName()+","+bpc.getAge());
        bpc.teach();
        bpc.eat();
        System.out.println("-----------------------");
        //乒乓球教练
        PingBangCoach ppb = new PingBangCoach();
        ppb.setName("乒乓球教练");
        ppb.setAge(40);
        System.out.println(ppb.getName()+","+ppb.getAge());
        ppb.eat();
        ppb.speak();
        ppb.teach();
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值