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:多态成员方法

  • 编译时期:参考引用变量所属的类,如果没有类中没有调用的方法,编译失败。
  • 运行时期:参考引用变量所指的对象所属的类,并运行对象所属类中的成员方法。

简而言之:编译看左边,运行看右边

posted @   TimQiu  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示