目录
猫🐱和狗🐕(接口版本)
画图分析
案例代码
猫🐱和狗🐕(接口版本)
需求:对猫和狗进行训练,它们就可以跳高了,这里加入了跳高功能,请采用抽象类和接口来实现猫和狗的案例。
1. 定义跳高接口(JumpInterface)
- 成员方法:跳高()——jump();
2. 定义动物类抽象类(Animal)实现跳高接口
- 成员变量:姓名、年龄
- 构造方法:无参、带参
- 成员方法:get/set方法,吃饭()——eat()
3. 定义猫类(Cat),继承动物类Animal
- 构造方法:无参、带参
- 成员方法:重写eat(),重写跳高jump()
4. 定义狗类(Dog),继承动物类Animal
- 构造方法:无参、带参
- 成员方法:重写eat(),重写跳高jump()
画图分析
案例代码
JumpInterface.java
package com.面向对象.Demo30;
public interface JumpInterface {
//跳高方法jump()
void jump(); //==> public abstract void jump();
}
Animal.java
package com.面向对象.Demo30;
public abstract class Animal implements JumpInterface {
private String name; // 姓名
public int age; // 年龄
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
/**
* 在 Animal 动物类中 实际已经有一个 jump()跳高的 抽象方法
* <p>
* 抽象类 实现接口中的jump() 抽象方法
* 相当于在Animal(抽象)类 实现了接口
* 意味这在Animal类中存在jump()抽象方法
* 正常情况是不需要写的,让抽象类的子类进行重写
*/
public abstract void eat();
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;
}
}
Cat.java
package com.面向对象.Demo30;
public class Cat extends Animal {
public Cat(String name, int age) {
//super(); 默认第一行 调用父类中的无参构造方法
super(name, age);
}
@Override
public void jump() {
System.out.println("Cat-jump()");
}
@Override
public void eat() {
System.out.println("Cat-eat()");
}
}
Dog.java
package com.面向对象.Demo30;
public class Dog extends Animal {
// public Dog(String name, int age) {
// super(name, age);
// }
@Override
public void jump() {
System.out.println("Dog-jump()");
}
@Override
public void eat() {
System.out.println("Dog-eat()");
}
}
AnimalDemo.java
package com.面向对象.Demo30;
public class AnimalDemo {
public static void main(String[] args) {
JumpInterface cat1 = new Cat("小猫1", 1);
// System.out.println(cat1.getName() + "," + cat1.getAge());//报错,编译看左边,JumpInterface中没有get/set方法
cat1.jump();
// cat.eat(); //报错,编译看左边,JumpInterface中没有eat方法
System.out.println("=============");
Animal cat2 = new Cat("小猫2", 2);
System.out.println("name:"+cat2.getName() + ",age:" + cat2.getAge());
cat2.jump();
cat2.eat();
System.out.println("=========================");
Animal dog = new Dog();
dog.setName("小狗1");
dog.setAge(1);
System.out.println("name:"+dog.getName()+",age:"+dog.getAge());
dog.jump();
dog.eat();
}
}
下一篇文章: