接口:
接口概述:
-->狭义:java中的interface
-->广义:对外提供规则的都是接口
接口的特点:
A:接口用关键字interface表示
-->interface 接口名 {}
B:类实现接口用implements表示
-->class 类名 implements 接口名{}
C:接口不能实例化
如何实例化?
-->按照多态的方式来实例化
D:接口的子类
1.可以是抽象类,但是意义不大
2.可以是具体类,要重写接口中的所有抽象方法
-->如果继承的类中已经重写了一部分方法的话,那么只要重写剩余抽象方法就行了
接口的成员特点:
成员变量:
只能是常量,并且是静态的公开的.
--> public static final (建议自己给出)
构造方法:
接口中没有构造方法
成员方法:
默认修饰符:public static (建议自己给出)
类与类,类与接口,接口与接口的关系
类与类:
继承关系-->只能单继承,支持多层继承
类与接口:
实现关系-->可以单实现,也可以多实现
-->可以理解为一个人可以学习多个技能
接口与接口:
继承关系,可以单继承,也可以多继承
抽象类与接口的区别:
抽象类:
成员变量:可以变量,也可以是常量
构造方法:有
成员变量:可以抽象,也可以非抽象
接口:
成员变量:只可以常量
成员方法:只可以抽象
设计理念的不同:
抽象类体现的是一种"is a" 的关系
接口 被实现体现的是一种"like a"的关系
附上一段接口的示例代码
[Java] 纯文本查看 复制代码 class Test {
public static void main(String[] args){
SmokingStudent s = new SmokingStudent("刘",21);
s.study();
s.smoke();
}
}
interface Smoking {
public abstract void smoke();
}
abstract class Person {
private String name;
private int age;
public Person(){}
public Person(String name,int age){
this.name = name;
this.age = age;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}
abstract class Student extends Person {
public Student(){}
public Student(String name,int age){
super(name,age);
}
public abstract void study();
}
class SmokingStudent extends Student implements Smoking{
public SmokingStudent(){}
public SmokingStudent(String name,int age){
super(name,age);
}
public void study(){
System.out.println("学生学习");
}
public void smoke(){
System.out.println("学生抽烟");
}
}
|