上篇,我们学习了猫和狗的继承和多态 这篇,我们继续来写猫和狗的抽象和接口版
简单思路不变:1.定义动物类 2.定义猫,狗类,让他们成为动物的子类
3.编写测试类。
- 抽象:abstract 不能实例化,但是可以参照多态的方法实例化。
代码和之前的多态差别不大。
//animal.class
package Stu;
public abstract class animal {
public String name;
public 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();
}
//cat.class
package Stu;
public class cat extends animal {
public cat() {
}
public cat(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
//dog.class
package Stu;
public class dog extends animal {
public dog() {
}
public dog(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("狗吃肉");
}
}
//anidemo.class
package Stu;
//测试类
public class anidemo {
public static void main(String[] args) {
animal c1=new cat();//创建猫对象,按照多态的方式,因为抽象不能实例化
c1.setName("曼基康");
c1.setAge(2);
System.out.println(c1.getName()+","+c1.getAge());
c1.eat();
animal d1=new dog();//创建狗对象,按照多态的方式,因为抽象不能实例化
d1.setName("金毛");
d1.setAge(2);
System.out.println(d1.getName()+","+d1.getAge());
d1.eat();
}
}
结果演示
- 接口:公共的规范标准,java中体现在对行为的抽象
定义了一个接口,实现猫和狗练习算术
//math
package Stu;
public interface math {
public abstract void mathing();
}
//animal
和抽象的一摸一样,所以就不写了
//cat
package Stu;
public class cat extends animal implements math{//定义一个类继承animal实现接口math
public cat() {
}
public cat(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("猫吃鱼");
}
@Override
public void mathing() {
System.out.println("猫练习算术");
}
}
//dog
package Stu;
public class dog extends animal implements math{//定义一个类继承animal实现接口math
public dog() {
}
public dog(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("狗吃肉");
}
@Override
public void mathing() {
System.out.println("狗练习算术");
}
}
//anidemo
package Stu;
//测试类
public class anidemo {
public static void main(String[] args) {
math c=new cat();//使用多态的方法创建
c.mathing();
System.out.println("************");
animal c1=new cat();//创建猫对象,按照多态的方式,因为抽象不能实例化
c1.setName("曼基康");
c1.setAge(2);
System.out.println(c1.getName()+","+c1.getAge());
c1.eat();
System.out.println("************");
math d=new dog();//使用多态的方法创建
d.mathing();
System.out.println("************");
animal d1=new dog();//创建狗对象,按照多态的方式,因为抽象不能实例化
d1.setName("金毛");
d1.setAge(2);
System.out.println(d1.getName()+","+d1.getAge());
d1.eat();
}
}
具体使用接口是这样的
//具体使用接口
cat c2=new cat();
c2.mathing();
结果演示
ok,到这里,继承,多态,抽象,接口都演示完毕。