Java接口
接口的概念
接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。
接口的特点
1、接口是一个特殊的类,只包含全局常量和抽象方法。
接口中的抽象方法可以不加入abstract而抽象类中的抽象方法必须有abstract声明
2、一个类只能继承一个父类,但可以同时实现多个接口
3、一个接口可以同时继承多个接口,以实现接口的多继承
4、接口和抽象类意义都必须依靠子类
5、一个抽象类可以实现多个接口,但一个接口不能继承抽象类
接口与类的区别
1、接口不能用于实例化对象。
2、接口没有构造方法。
3、接口中所有的方法必须是抽象方法。
4、接口不能包含成员变量,除了static和final变量。
5、接口不是被类继承了,而是要被类实现。
6、接口支持多重继承。
接口定义
[public] interface 接口名 [extends <父接口列表>] {
[public] [static] [final] 常量;
[public] [abstract] 方法;
}
完整格式
interface A{ // 定义接口A
public static final String AUTHOR = "张三" ; // 全局常量
public abstract void print() ; // 抽象方法
public abstract String getInfo() ; // 抽象方法
}
简化格式
interface A{ // 定义接口A
String AUTHOR = “张三" ; // 全局常量
void print() ; // 抽象方法
String getInfo() ; // 抽象方法
}
接口实现
[修饰符] class <类名> [extends <父类名>] [implements <接口列表>]{
类体
}
其中,接口列表可以包括多个接口名称,各名称间用逗号分隔。
接口多态
interface Pet{ public abstract void speak(); }
class Dog implements Pet{
public void speak(){ System.out.println("Woof"); }
}
class Cat implements Pet{
public void speak(){ System.out.println("Meow"); }
}
class Bird implements Pet{
public void speak(){ System.out.println("Tweedle");}
}
public class TestAnimals2{
public static void main(String args[]){
Pet myPets[] = new Pet[4]; //接口多态
myPets[0] = new Bird();
myPets[1] = new Cat();
myPets[2] = new Bird();
myPets[3] = new Dog();
for (int index=0; index<4; index++)
myPets[index].speak();
}
}
多态成员的特点
A:多态成员变量
当子父类中出现同名的成员变量时,多态调用该变量时:
- 编译时期:参考的是引用型变量所属的类中是否有被调用的成员变量。没有,编译失败。
- 运行时期:也是调用引用型变量所属的类中的成员变量。
简单记:编译运行看左边。
B:多态成员方法
- 编译时期:参考引用变量所属的类,如果没有类中没有调用的方法,编译失败。
- 运行时期:参考引用变量所指的对象所属的类,并运行对象所属类中的成员方法。
简而言之:编译看左边,运行看右边
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)