接口:
1.什么是接口?
还有另外一个关键字,也可以用来定义新的数据类型:interface
但是,使用interface关键字定义的新数据类型,有一些特殊的要求:
2.怎么定义一个接口?
3.怎么使用一个接口?
4.接口的继承
接口支持多继承
类只支持单继承
5.实现多个接口
1.什么是接口?
还有另外一个关键字,也可以用来定义新的数据类型:interface
但是,使用interface关键字定义的新数据类型,有一些特殊的要求:
1.1在这种数据类型中,只能有方法声明,不能有方法实现。
1.2在这种数据类型中,所声明的成员变量,默认都是public static final的。
1.3在这种数据类型中,所声明的方法,默认都是public abstract的。
2.怎么定义一个接口?
interface YaoKongQi{
public void open();
public void close();
public void adjustTemp();
}
3.怎么使用一个接口?
3.1接口是要被类来实现的。所谓接口的实现,实际上就是要实现接口中声明的方法。
3.2在一个类的方法名后面,使用关键字implements,后跟接口名称,用以指明该类所实现的接口。
3.3如果一个类实现一个接口,那么它必须实现该接口中所有的方法。
4.接口的继承
接口支持多继承
类只支持单继承
5.实现多个接口
一个类可以实现多个接口,这时需要在关键字implements后跟接口名称列表。
interface Singer{
void singing();
}
interface Singer2{
void dancing();
}
interface Actor{
void playing();
}
class Student implements Singer,Actor,Singer2{
String stuName;
Student(String stuName){
this.stuName = stuName;
}
@Override
public void singing(){
System.out.println("啦啦啦");
}
@Override
public void playing(){
System.out.println("我演过血滴子");
}
void study(){
System.out.println("good good study, day day up");
}
}
class Teacher implements Singer{
String teacherName;
Teacher(String teacherName){
this.teacherName = teacherName;
}
void teaching(){
System.out.println("老师");
}
@Override
public void singing(){
System.out.println("啊啊啊");
}
}
public class Example04{
//尽可能采用面向接口的编程,有利于对象之间的解耦合
static void doSomethingForSinger(Singer singer){
//.....
}
public static void main(String[] args){
/*
Student stu = new Student();
stu.stuName = "李宇春";
stu.singing();
Singer singer = new Student(); //向上转型
singer.singing();
Actor actor = (Actor)singer;
actor.playing();
*/
//多态
Singer singer = new Student("李宇春");
singer.singing();
if(singer instanceof Student){
Student stu = (Student)singer; //向下转型
stu.study();
}
if(singer instanceof Teacher){
Teacher teacher1 = (Teacher)singer; //向下转型
}
singer = new Teacher("刘欢");
singer.singing();
Teacher teacher = (Teacher)singer; //向下转型
teacher.teaching();
}
}