CSDN话题挑战赛第1期
活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f
参赛话题:Java学习记录
话题描述:可以记录一下平时学习Java中的一些知识点、心得、例题、常见的问题解决
一、前言
- 学习概述:本文讲解Java接口的定义实现作用等
- 学习目标:掌握Java接口实现多重继承的意义
二、Java接口的定义
1.概述
接口是一种特殊的抽象类,是Java提供的一个重要的功能,与抽象类不同的是:
- 接口的所有数据成员都是静态的且必须初始化。
- 接口中的所有方法必须都是抽象方法,不能有一般的方法。
[public] interface 接口名称 [extends 父接口名列表]
{
[public] [static] [final]数据类型 成员变量名 = 常量;
...
[public][abstract]返回值数据类型 方法名(参数表);
...
}
2.接口的实现
接口和抽象类一样不能用来实例化对象,必须借用接口的特征创建出来一个新的类,然后用新的类来实例化对象。
- 特点:
- 利用接口创建新的类的过程称为接口的实现。
- 实现一个接口的过程使用implements关键字。
代码:
class 类名称 implements 接口名表
{
...
}
3.接口的引用
接口可以作为一种引用类型来使用,任何实现该接口的类实例化的对象都可以储存在该接口类型的变量中,通过这些变量访问类所实现的接口中的方法。
4.总结
可以利用实现接口来完成Java语言的多重继承,同时,规避了C++语言多重继承时产生歧义的问题。
三、接口的继承
- 定义:接口和类一样也可以使用继承派生出来新的类。也可以通过extends关键字来实现,被继承的接口称为父接口,派生出来的新接口称为子接口。但是不同的是,一个子接口可以同时有多个直接父接口。它们之间用逗号分隔。子接口继承父接口的所有变量和方法。
样例:
interface A{
abstract void print1();
}
interface B extends A{
abstract void print2();
}
class C implements B{
public void print1(){
System.out.print("Hello");
}
public void print2(){
System.out.print("World");
}
}
public class Print{
public static void main(String[] args){
B b=new C();
b.print1();
b.print2();
}
}
四、利用接口实现多重继承
由于Java不支持多重继承,所以可以利用接口实现类似于多重继承的机制,同时规避了C++多重继承中存在很多歧义的问题,使代码更加简洁,逻辑清晰,安全可靠。`一个类只能有一个直接父类,但是它可以同时实现多个接口`,可以把接口理解为类,即实现了Java类的多重继承。
1.问题描述
- 需求:通过实现接口计算圆柱的体积
- 例如:圆柱体的体积=157.0
2.问题解析
提示:利用实现Java接口的方法实现Java多重继承
3.编码实现
//filename:Cylinder.java
interface Face1{
final double PI=3.14;
abstract double area();
}
interface Face2{
abstract void volume();
}
public class Cylinder implements Face1,Face2{
private double radius;
private int height;
public Cylinder(double r,int h){
radius=r;
height=h;
}
public double area(){
return PI*radius*radius;
}
public void volume(){
System.out.print("圆柱体的体积="+this.area()*height);
}
public static void main(String[] args){
Cylinder volu=new Cylinder(5.0,2);
volu.volume();
}
}
4.输出结果
圆柱体的体积=157.0
五、常见问题
- 接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用。 在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。
- 接口一定是抽象的,不能在接口中实例化对象
CSDN话题挑战赛第1期
活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f