接口的成员特点
-
成员变量
只能是常量
默认修饰符:public static final
-
构造方法
接口没有构造方法,因为接口主要是对对象进行抽象的,是没有具体存在
一个类中如果没有父类,默认继承Object类
-
成员方法
只能是抽象方法
默认修饰符:public abstrac
类和接口的关系
-
类和类的关系
继承关系,只能单继承,但是可以多层继承
-
类和接口的关系
实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
-
接口的接口的关系
继承关系,可以单继承,也可以多继承
package Demo8;
public interface Inter1 {
}
package Demo8;
public interface Inter2 {
}
package Demo8;
public interface Inter3 extends Inter1,Inter2{
}
package Demo8;
public class Intermpl extends Object implements Inter1,Inter2,Inter3{
}
抽象类和接口的区别
-
成员区别
抽象类: 变量,常量,有构造法方法,也有非抽象方法
接口: 常量;抽象方法、
-
关系区别
类与类 继承
类与接口 实现,可以单实现,也可以多实现
接口与接口 继承,单继承,多继承
-
设计理念区别
抽象类 对类抽象,包括属性,行为
接口 对行为抽象,主要是行为
-
抽象类是对事物的抽象,而接口是对行为的抽象
比如门具有开和关的功能,但是我们附加了一个报警的功能,但是有的门不具备报警的功能
所以 ,我们可以定义两个接口,一个门接口,一个报警接口,如果门具有报警和开关功能就用这个类去继承者两个接口,如果只有开关功能,那么只继承开关功能的接口
运动员和教练
需求:我们现在有乒乓球运动员和篮球运动运,乒乓球教练和篮球教练,为了出国交流,跟乒乓球相关人员都需要学习英语,
分析: 从具体到抽象
1. 乒乓球运动员
2. 篮球运动员
3. 乒乓球教练
4. 篮球教练
实现: 从抽象到具体
思路
- 定义说英语接口:成员方法:说英语
- 定义抽象人类: 成员变量:姓名年龄,set/get,吃饭();
- 定义抽象教练类,继承人类,无参,带参,成员方法,教();
- 定义抽象运动员类,继承人类,无参,带参,学习();
- 定义具体篮球教练类 ,继承教练类,无参,带参,成员方法,重写吃饭,重写教
- 定义具体乒乓球类,继承教练类 ,实现说英语接口,无参带参,重写吃饭,重写教,重写说英语;
- 定义具体篮球运动员类
- 定义具体乒乓球运动员类,,,,实现英语接口
- 测试类
package Demo9;
public class BaseketBallPlayer extends player{
public BaseketBallPlayer() {
}
public BaseketBallPlayer(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("篮球运动员吃鸡肉");
}
@Override
public void study() {
System.out.println("篮球运动员学习如何打篮球");
}
}
package Demo9;
public class BasketballTeacher extends TeachMan{
public BasketballTeacher() {
}
public BasketballTeacher(String name, int age) {
super(name, age);
}
@Override
public void teach() {
System.out.println("篮球教练教如何打篮球");
}
@Override
public void eat() {
System.out.println("篮球教练吃羊肉和牛奶");
}
}
package Demo9;
public class Human {
private String name;
private int age;
public Human() { }
public Human(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 void eat(){
System.out.println("吃饭");
}
}
package Demo9;
public class PingPongPlayer extends player implements sayEnglish{
@Override
public void sayEnglish(){
System.out.println("乒乓球运动员说英语");
}
public PingPongPlayer() {
}
public PingPongPlayer(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("乒乓球运动员吃土豆");
}
@Override
public void study() {
System.out.println("乒乓球运动员学习如何打乒乓球");
}
}
package Demo9;
public class PingPongTeacher extends TeachMan implements sayEnglish{
public PingPongTeacher() {
}
public PingPongTeacher(String name, int age) {
super(name, age);
}
@Override
public void teach() {
System.out.println("乒乓球教练教如何打乒乓球");
}
@Override
public void eat() {
System.out.println("乒乓球教练吃做肉和芹菜");
}
public void sayEnglish(){
System.out.println("乒乓球教练说英语");
}
}
package Demo9;
public class player extends Human{
public player() {
}
public player(String name, int age) {
super(name, age);
}
public void study(){
System.out.println("学习");
}
}
package Demo9;
public interface sayEnglish {
void sayEnglish();
}
package Demo9;
public class TeachMan extends Human{
public TeachMan(){}
public TeachMan(String name ,int age){super (name,age);}
public void teach(){
System.out.println("教");
}
}
package Demo9;
public class Application {
public static void main(String[] args) {
BaseketBallPlayer b =new BaseketBallPlayer("篮球运动员",20);
PingPongPlayer p = new PingPongPlayer("乒乓球运动员",21);
BasketballTeacher b1 = new BasketballTeacher("篮球教练",50);
PingPongTeacher p1 =new PingPongTeacher("乒乓球教练",55);
System.out.println(p.getName()+","+ p.getAge());
p.eat();
p.study();
p.sayEnglish();
System.out.println("---------------");
System.out.println(p1.getName()+","+ p1.getAge());
p1.sayEnglish();
p1.eat();
p1.teach();
System.out.println("---------------");
System.out.println(b.getName()+","+ b.getAge());
b.eat();
b.study();
System.out.println("---------------");
System.out.println(b1.getName()+","+ b1.getAge());
b1.eat();
b1.teach();
}
}
乒乓球运动员,21
乒乓球运动员吃土豆
乒乓球运动员学习如何打乒乓球
乒乓球运动员说英语
---------------
乒乓球教练,55
乒乓球教练说英语
乒乓球教练吃做肉和芹菜
乒乓球教练教如何打乒乓球
---------------
篮球运动员,20
篮球运动员吃鸡肉
篮球运动员学习如何打篮球
---------------
篮球教练,50
篮球教练吃羊肉和牛奶
篮球教练教如何打篮球