1、接口:是抽象方法的集合。可以理解为对抽象类的一种改造,实现其他语言(如C++的)多继承问题
- 一个类可实现多个接口
- 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
- 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
- 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
- 接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
- 如果没有实现接口中的所有方法,则子类仍然是抽象类
2、学习的代码
1、接口1
package com.learn.abstruct;
public interface LearnInterface {
//方法:隐式为抽象方法
public void walk ();
public void eat();
public void sleep();
}
2、接口2
package com.learn.abstruct;
public interface LearnInterfaceSec {
public void salary();
public void work();
}
3、实现一
package com.learn.abstruct;
public class Students implements LearnInterface ,LearnInterfaceSec {
@Override
public void walk() {
System.out.println("走道");
}
@Override
public void eat() {
System.out.println("食堂吃饭");
}
@Override
public void sleep() {
System.out.println("学生宿舍");
}
@Override
public void salary() {
System.out.println("-1000");
}
@Override
public void work() {
System.out.println("学习哦");
}
}
4、实现二
package com.learn.abstruct;
public class Teachers implements LearnInterface,LearnInterfaceSec {
@Override
public void walk() {
System.out.println("讲台上走");
}
@Override
public void eat() {
System.out.println("在家吃饭");
}
@Override
public void sleep() {
System.out.println("职工宿舍睡觉");
}
@Override
public void salary() {
System.out.println("1000");
}
@Override
public void work() {
System.out.println("科研、上课哦");
}
}
5、测试
package com.learn.test;
/**
* 测试
*/
import com.learn.abstruct.Students;
import com.learn.abstruct.Teachers;
import org.junit.Test;
public class LearnAbstructTest {
@Test
public void testInt(){
Students students = new Students();
Teachers teachers = new Teachers();
students.eat();
students.walk();
students.sleep();
students.salary();
students.work();
System.out.println("======================");
teachers.eat();
teachers.walk();
teachers.sleep();
teachers.salary();
teachers.work();
}
}
6、结果