第3节案例猫和狗/类和接口的关系/抽象类和接口的区别
案例:猫和狗
需求:对猫和狗进行测试,他们就可以跳高了,这里加入了跳高功能。请采用抽象类和接口来实现猫狗案例,并在测试类中进行测试
思路:
1、定义接口:成员方法:跳高();
2、定义抽象动物类(Animal):成员变量:姓名、年龄;构造方法:无参,带参;成员方法:get/set方法,吃饭();
3、定义具体猫类(Cat),继承动物类,实现跳高接口,构造方法:无参,带参;成员方法:重写吃饭(){...},重写跳高(){....}
4、定义具体狗类(Cat),同上
5、定义测试类(....Demo),写代码测试
package itheima_15; public interface Jump { void show();//跳高 }
package itheima_15; public class Animal implements Jump{ 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; } @Override public void show() { System.out.println("动物会跳高了"); } public void eat(){ System.out.println("动物在吃饭"); } }
package itheima_15; public class Cat extends Animal{ public Cat() { } public Cat(String name, int age) { super(name, age); } @Override public void eat() { System.out.println("猫吃饭"); } @Override public void show() { System.out.println("猫会跳高了"); } }
package itheima_15; public class Dog extends Animal{ public Dog() { } public Dog(String name, int age) { super(name, age); } @Override public void eat() { System.out.println("狗吃饭"); } @Override public void show() { System.out.println("狗会跳高了"); } }
package itheima_15; public class AnimalJumpDemo { public static void main(String[] args) { Animal a=new Cat(); a.setName("加菲猫"); a.setAge(5); System.out.println(a.getName()+","+a.getAge()); a.eat(); a.show(); System.out.println("-------"); a=new Cat("加菲",6); System.out.println(a.getName()+","+a.getAge()); System.out.println("-------"); Animal b=new Dog(); b.setName("狗梦"); b.setAge(24); System.out.println(b.getName()+","+b.getAge()); b.eat(); b.show(); System.out.println("-------"); b=new Dog("狗梦",18); System.out.println(b.getName()+","+b.getAge()); } }
类和接口的关系
类和类的关系
继承关系,只能单继承,但是可以多层继承
类和接口的关系
实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
接口和接口的关系
继承关系,可以单继承,也可以多继承
package itheima_16; public interface Inter1 { }
package itheima_16; public interface Inter2 extends Inter1,Inter3{ }
package itheima_16; public interface Inter3 { }
package itheima_16; public class InterImpl extends Object implements Inter1,Inter2,Inter3{ }
抽象类和接口的区别
成员区别
抽象类 变量,常量;有构造方法;有抽象方法,也有非抽象方法
接口 常量;抽象方法
关系区别
类与类 继承,单继承
类与接口 实现,可以单实现,也可以多实现
接口与接口 继承,单继承,多继承
设计理念区别
抽象类 对类抽象,包括属性、行为
接口 对行为抽象,主要是行为
抽象类是对事物的抽象,而接口是对行为的抽象

浙公网安备 33010602011771号