接口
有时必须从几个类中派生出一个子类,继承他们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果
接口(interface)是抽象方法和常量值的定义的集合
从本质上来讲,接口是一种特殊的抽象类,这种抽象类只包含常量和方法的定义,而没有变量和方法的实现
实现接口
class SubClass implements InterfaceA{}
一个类可以实现多个接口,接口也可以继承其他接口
接口的特点:
1.用interface来定义
2.接口中所有成员变量都默认由public static final修饰的
3.接口中所有的方法都默认由public abstract修饰的
4.接口没有构造器
5.接口采用多重继承机制
接口定义举例:
public interface Runner{
int ID=1; //public statrc final int ID=1;
void start(); //public abstract void start();
public void run();//public abstract void run();
viod stop(); //public abstract viod stop();
}
实现接口的类中必须提供接口中所有的方法的具体实现内容,方可实例化。否则,仍为抽象类。
public abstract class TestInImpl1 implements TestIn {
}
接口的主要用途就是被实现类实现。(面向接口编程)
继承关系类似,接口与实现类之间存在多态性。
定义Java的语法格式:先写extends,后写implements
public class TestInImpl2 extends Person implements TestIn,TestIn1{
@Override
public void test() {
}
@Override
public void test1() {
}
}
描述会唱歌的厨子是一个老师
public abstract class Person1 {
int age;
String name;
int sex;
public abstract void showInfo();
}
public interface Cooking { //厨艺的接口
void fry();//炒菜
}
public interface Sing { //唱歌的接口
void singing();//唱法
}
/**
* 描述会唱歌的厨子是一个老师
* @author zym
*
*/
public class SCTeacher extends Person1 implements Cooking,Sing{
String course;//教的科目
public void setInfo(){
super.name="小赵";
super.age=18;
super.sex=1;
this.course="数学";
}
@Override
public void showInfo() {
System.out.println("会唱歌的厨子的老师的信息是:");
System.out.println(super.age);
System.out.println(super.name);
System.out.println(super.sex);
System.out.println(this.course);
}
@Override
public void fry() {
System.out.println(super.name+"老师拿手的厨艺是炒菜");
}
@Override
public void singing() {
System.out.println(super.name+"老师擅长美声唱法");
}
}
抽象类是对于一类事物的高度抽象,其中既有属性也有方法
接口是对方法的抽象,也就对一系列动作的抽象
当需要对一类事物抽象的时候,应该是使用抽象类,好形成一个父类
当需要对一系列的动作抽象,就使用接口,需要使用这些动作的类去实现相应的接口即可