普通类、抽象类和接口之间的实现、继承关系

作者ChihMinh,原作链接https://chihminh.github.io/2016/08/10/serializable/,转载请注明出处

普通类抽象类和接口间 的继承关系

普通类

继承一个抽象类(必须实现其所有的抽象方法)或者一个普通类(只能继承一个类),实现多个接口。

继承一个普通类 &实现多个接口

Man.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Man extends Human implements IFace, ICommunicate {
@Override
public void smile() { System.out.println("Smile in man's way"); }
@Override
public void cry() { System.out.println("Cry in man's way"); }
@Override
public void nerd() { System.out.println("Nerd in man's way"); }
@Override
public void speak() { System.out.println("Speak in man's way."); }
@Override
public void listen() { System.out.println("Listen in man's way"); }
@Override
public void shout() { System.out.println("Shout in man's way"); }
@Override
public void ignore() { System.out.println("Ignore in man's way"); }
}

HUman.java

1
2
3
4
5
6
public class Human {
public int age;
public int height;
public int weight;
public String colorOfHair;
}

继承一个抽象类

Woman.java

1
2
3
4
5
6
7
8
public class Woman extends AbstractHuman {
@Override
public void eat() { System.out.println("Eat in woman's way"); }
@Override
public void walk() { System.out.println("Eat in woman's way"); }
}

抽象类

继承一个普通类或者抽象类(可以实现任意个抽象方法,因为抽象类可以没有抽象方法),实现多个接口(同样抽象方法可实现可不实现)。

继承一个普通类

AbstractHuman.java

1
2
3
4
5
6
7
8
9
10
public abstract class AbstractHuman extends Human {
public int age;
public int height;
public int weight;
public String colorOfHair;
public abstract void eat();
public abstract void walk();
}

继承一个抽象类 &实现多个接口

AbstractWoman.java

1
2
public abstract class AbstractWoman extends AbstractHuman implements ICommunicate, IFace{
}

接口

继承多个接口

只能用extends,而且只能继承接口
ICommunication.java

1
2
3
4
public interface ICommunicate extends IShout, IIgnore {
void speak();
void listen();
}

IFace.Java

1
2
3
4
5
public interface IFace {
void smile();
void cry();
void nerd();
}

IIgnore.java

1
2
3
public interface IIgnore {
void ignore();
}

总结

  1. 普通类如果有抽象父类,子类必须实现父类所有的抽象方法。
  2. 抽象类如果有抽象父类,子类可以实现任意个(零个到全部)抽象方法。
  3. 接口可以继承多个接口。
  4. 类是但继承的,接口可以实现多个。