- /*
- 接口:是一种特殊的抽象类。比抽象类更抽象。因为它里面的方法都是抽象的。
- 原因:这个抽象类中,只有抽象方法。针对这种情况,java就提供了一种更加抽象的表示形式:接口
- 作用:
- 格式:interface 类名 ... class 子类 extends 父类 implement 接口
- 特点:
- A:接口不能被实例化。
- B:接口中的方法:
- 要么被子类重写。
- 要么子类也是抽象类。
- 由此可见:
- A:具体类多态(几乎没有)
- B:抽象类多态(常用)
- C:接口多态(最常用) 可体现事物的额外功能
- 接口的成员特点:
- 成员变量:接口中只有常量。
- 因为接口的成员变量有默认修饰符:
- public static final
- 推荐:永远自己给出修饰符。
- 构造方法:
- 没有构造方法。
- 任何类如果没有继承父类,那么这个类就继承自Object类。
- 成员方法:接口中的方法都是抽象的。
- 因为接口中的成员方法有默认修饰符:
- public abstract
- 推荐:永远自己给出修饰符。
- 注意事项:
- 类与类关系:
- 继承关系。而且只能单继承,可以多层继承。
- 类与接口的关系:
- 实现关系。可以单实现,也可以多实现。
- 并且还可以在继承一个类的同时,实现多个接口。
- 接口与接口的关系:
- 继承关系。可以单继承,也可以多继承。
- 抽象类:
- 成员变量:可以是变量,也可以是常量。
- 构造方法:有构造方法。
- 成员方法:可以是抽象方法,也可以是非抽象方法。
- 接口:
- 成员变量:只能是常量。
- 默认修饰符:public static final
- 成员方法:只能是抽象方法。
- 默认修饰符:public abstract
- 设计理念的区别
- 抽象类被继承,这个类中定义的是整个继承体现的共性内容。
- 体现:is a
- 接口被实现,这个接口中定义的是整个体现的扩展内容。
- 体现:like a
- 案例:
- 乒乓球运动员和教练
- 篮球运动员和教练
- 为了出国交流,乒乓球运动员和教练需要说英语。
- 请你用所学知识,分析,这里应该有哪些类,抽象类,接口。
- */
- interface En
- {
- void speak();//默认修饰符 public staitc void speak();
- }
- abstract class Person
- {
- String name;
- public Person(){}
- public Person(String name)
- {
- this.name=name;
- }
- public abstract void show();
- }
- class Student extends Person implements En
- {
- public void show()
- {
- System.out.println("En");
- }
- public void speak()
- {
- System.out.println("Cn");
- }
- }
- class 接口
- {
- public static void main(String[] args)
- {
- Person p=new Student();
- p.show();
- //p.speak();接口不能被实例化,需创建子类对象。
- Student s=new Student();
- s.speak();
- }
- }
复制代码
|
|