接口:虽然可以简单理解为所有方法都是抽象的只制定了规则
接口所有的方法都是抽象的
类用class表示,接口用interface表示
interface Animal
{
public abstract void eat();
}
接口怎么用
必须有具体的类来实现(implament)
class 类名 implement 接口名
{
}
举例:
class Cat implement Animal
{
public void eat();//abstract加不加都一样
{
Sop("eat");
}
}
接口多态
Animal a = new Cat();
格式
interface 接口名{}
实现类(子类)实现接口的格式
class 类名 implement 接口名
{
重写接口中的抽象方法;
}
类与类是继承关系,接口与类是实现关系
接口可以看作一个特殊的抽象类
接口基本特点
接口是是抽象的不能被实例化
接口中的方法
要么被子类重写,要么子类也是抽象类
接口成员特点:只有常量和抽象方法
成员变量:接口中只有常量
因为接口的成员变量有默认修饰符:public static final
推荐:永远自己给出修饰符
构造方法
接口是没有构造方法的
接口是静态的不需要对数据进行初始化,没有构造意义
ps:任何类如果没有要继承的父类,那么就继承自object类
成员方法
接口中的方法都是抽象的
因为接口中的成员方法:public abstract
推荐:永远自己给出修饰符
类和接口的关系
类与类:
继承关系,只能单继承,可以多重(层)继承
类与接口
实现关系,可以单实现,也可以多实现
并且还可以在继承一个类的同时,实现多个接口
接口与接口
继承关系,可以单继承也可以多继承
同名的抽象方法(没有内容)不会出现调用不明确
所有类都直接或者间接的继承自Object类,Object是超类
为什么所有类的构造方法都默认调用父类的无参构造?
所有类都直接或者间接的继承自Object类,而且Object类只提供了无参构造。
情况一:如果其他类直接继承Object类,并且假设构造方法默认调用父类的带参构造的话,会因为Object类没有带参构造而出错。
情况二:如果A类继承于B类,如果B类没有手动定义构造方法,系统会默认提供一个无参构造,假设构造方法默认调用父类的带参构造的话,
A类调用B类的带参构造,B类没有,也是会报错的。但是调用B的无参构造就没有问题。
接口的思想的特点
接口是对外暴露的规则:比如USB口的规格
接口是程序的功能扩展:比如电脑要提供多个USB
接口的出现降低耦合性(类与类的关系)(相对于继承):比如大医院和小诊所
让类与类的关系减弱一个类的改变对其他类的影响变弱:
ps:内聚(自己完成功能的能力):
接口可以用来多实现:尽可能抽象
接口与类之间是实现关系,而且类可以继承,一个类同时实现多个接口
接口与接口是继承关系,可以是多继承也可以是单继承:
接口和抽象类特点
成员特点:
抽象类
成员变量:可以是变量也可以是常量
构造方法:有构造方法,
用于子类访问父类数据前,对父类数据进行初始化
成员方法:可以有抽象方法也可有非抽象的方法
抽象方法是为了要求子类做什么
非抽象提高代码复用,让子类继承
接口
成员变量:只能是常量,默认修饰符:public static final
成员方法:只有抽象方法,默认修饰符:public abstract
关系特点:
类与类:继承关系,只能单继承,多重继承
类与接口:
实现关系,可以单实现,也可以多实现
还可在继承一个累的额同时实现多个接口
接口与接口:
继承关系,可以单继承也可以多继承
设计理念
抽象类被继承,这个类中定义的是整个继承实现的共性内容
体现:is a
接口被实现,这个接口中定义的是整个体现的扩展内容
体现:like a
案例
乒乓球运动员和教练//抽象为人类
篮球运动员和教练//抽象为人类
为了出国交流,乒乓球运动员和教练需要说英语。//定义接口
请你用所学知识,分析这里应该有哪些类,抽象类,接口。
分析
由具体到抽象
实现
由抽象到具体
使用
使用具体的
敲代码时要敲一段测一段,代码是该出来的,不是敲出来的
多态
抽象类
接口
|
|