接口中成员的特点:
类和类之间:
继承关系,只能单继承,不能多继承,但是可以多层继承
类和接口的关系:
实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。
接口和接口的关系
继承关系,可以多继承,也可以单继承。
我们首先先分析,这四个类中都有姓名,年龄。所以我们先创建一个父类,定义年龄,姓名。
创建Person父类:
我们将Person类定义为抽象类,防止外界创建Person对象。
public abstract class Person {
private String name;
private int age;
public Person() {
}
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
创建English接口:
public interface English {
public abstract void E();
}
创建运动员Yun这个父类:
定义study这个抽象类,因为两个运动员学的不一样,为了强制重写,用抽象类。
public abstract class Yun extends Person {
public Yun() {
}
public Yun(int age, String name) {
super(age, name);
}
public abstract void study();
}
创建教练Jiao这个父类:
public abstract class Jiao extends Person {
public Jiao() {
}
public Jiao(int age, String name) {
super(age, name);
}
public abstract void teach();
}
创建篮球跟乒乓球运动员子类:
因为乒乓球运动员需要说英语,所以需要用接口,在继承Yun后面再次使用English这个接口。
public class lanqiuYun extends Yun {
@Override
public void study() {
System.out.println("篮球运动员在打篮球");
}
}
public class pingYun extends Yun implements English {
public pingYun() {
}
public pingYun(int age, String name) {
super(age, name);
}
@Override
public void E() {
System.out.println("乒乓球运动员在说英语");
}
@Override
public void study() {
System.out.println("乒乓球运动员在学习如何打乒乓球");
}
}
创建篮球跟乒乓球教练子类:
public class lanqiuJiao extends Jiao {
public lanqiuJiao() {
}
public lanqiuJiao(int age, String name) {
super(age, name);
}
@Override
public void teach() {
System.out.println("篮球教练在教篮球");
}
}
public class pingpangJiao extends Jiao implements English{
public pingpangJiao() {
}
public pingpangJiao(int age, String name) {
super(age, name);
}
@Override
public void E() {
System.out.println("乒乓球教练说英语");
}
@Override
public void teach() {
System.out.println("乒乓球教练在教乒乓球");
}
}
最后创建Test类进行输出打印:
public class Test {
public static void main(String[] args){
pingYun p=new pingYun(23,"111");
System.out.println(p.getAge()+","+p.getName());
p.study();
p.E();
}
}