JAVA基础之接口关系比较
类与接口的关系
1:类实现接口implements
,可以多实现,还可以在继承一个类的同时实现多个接口
2:接口可以继承单个或者多个接口
抽象类与接口的区别
1:成员区别
- 抽象类:变量,常量;有构造方法但是要通过子类实例化;有抽象方法,也有非抽象方法。
- 接口:常量默认
public static final
;抽象方法默认public abstract
2:设计理念 - 抽象类:对类抽象,包括属性,行为
- 接口:对行为抽象
抽象类实现事物基础实现的功能(共性),接口实现特殊功能1
2
3public interface SpeakEnglish {
void speak();
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24public abstract class Person {
private String name;
private int 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 Person() {
super();
// TODO Auto-generated constructor stub
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15public abstract class Player extends Person {
abstract void study();
public Player() {
super();
// TODO Auto-generated constructor stub
}
public Player(String name, int age) {
super(name, age);
// TODO Auto-generated constructor stub
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34public class BasketballPlayer extends Player implements SpeakEnglish {
@Override
public void speak() {
// TODO Auto-generated method stub
System.out.println("说英语");
}
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("吃篮球餐");
}
@Override
void study() {
// TODO Auto-generated method stub
System.out.println("学习篮球");
}
public BasketballPlayer() {
super();
// TODO Auto-generated constructor stub
}
public BasketballPlayer(String name, int age) {
super(name, age);
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "BasketballPlayer [getName()=" + getName() + ", getAge()=" + getAge() + "]";
}1
2
3
4
5
6
7
8
9
10
11
12public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
BasketballPlayer bp=new BasketballPlayer("张三",30);
bp.eat();
bp.study();
bp.speak();
System.out.println(bp.toString());
}
}1
2
3
4吃篮球餐
学习篮球
说英语
BasketballPlayer [getName()=张三, getAge()=30]
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 mopinlan!
评论