JAVA接口的概念
官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
我的理解:在类中,方法是具体的,通过接口我们可以将具体的方法抽象化。比如在动物类中有吃的动作,不同的动物吃不同的食物,食肉食草等,通过接口我们可以对不同的动物调用不同的接口方法。
接口的代码实现
定义关键字:interface
1
2
3
|
public interface 接口名{
//里面不可以有具体的方法体!!!
}
|
实现 关键字: implements
1
2
3
|
public class 类名 implements 接口名,接口名 2 {
//在这里重写接口中的抽象方法
}
|
举个列子
小明从南京去北京的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
public class xiaoming {
public void WaytoBeiJing(waytoBeiJing wtbj){
wtbj.WaytoBeiJing();
}
public static void main(String[] args) {
xiaoming Xiaoming = new xiaoming();
xiaoming_tobeijing xm_tbj = new xiaoming_tobeijing();
Xiaoming.WaytoBeiJing(xm_tbj);
}
}
// 定义接口
public interface waytoBeiJing {
public void WaytoBeiJing(); //抽象方法 没有方法体
}
//写方法
public class xiaoming_tobeijing implements waytoBeiJing{
//重写去北京的方法
@Override
public void WaytoBeiJing(){
System.out.println( "乘坐飞机" );
}
//一个类中只能有一个方法 可以再次创建一个类 写第二种方法
}
结果:
乘坐飞机
Process finished with exit code 0
|
注意事项
1.接口不能被实例化。
2.接口中所有方法不能有主体。
3.一个类可以实现多个接口。
4.接口可以有变量,但一定是public static final 修饰,就算你不写,JVM也会默认是这个。
5.接口中的方法只能是public修饰。
6.一个接口不能继承其他类,但是可以继承别的接口。
Java继承
什么是继承:
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 为什么要用继承:可以去掉重复代码,方便后期维护
举个列子,大家应该都玩过英雄联盟,每个英雄都是一个类,如果说不用继承的话每次都要重复定义每个英雄的成员属性,如下图我举了一个MF,一个EZ的列子
1
2
3
4
5
6
7
8
9
10
11
|
public class MissFortune {
// 成员
// 属性
String nameID;
int hp;
int ad;
int ap;
int lv; // 人物等级
// 技能等级
int q_lv;
}
|
1
2
3
4
5
6
7
8
9
10
11
|
public class Ezreal {
// 成员
// 属性
String nameID;
int hp;
int ad;
int ap;
int lv; // 人物等级
// 技能等级
int q_lv;
}
|
这样就创建了两个单独独立的英雄类,可以发现前半部分代码都是重复的,下面我们用继承来看一下
首先创建一个父类:
1
2
3
4
5
6
7
8
9
10
11
|
public class Hero {
// 成员
// 属性
String nameID;
int hp;
int ad;
int ap;
int lv; // 人物等级
// 技能等级
int q_lv;
}
|
然后再看我们的单独英雄类:
1
2
3
4
5
6
7
8
9
10
11
|
public class MissFortune extends Hero{
// 成员方法
// 初始化
public void initMissFortune(){
hp= 570 ;
ad= 52 ;
ap= 0 ;
lv= 1 ;
q_lv= 1 ;
}
}
|
1
2
3
4
5
6
7
8
9
10
11
|
public class Ezreal extends Hero {
// 成员方法
// 初始化
public void initEzreal(){
hp= 530 ;
ad= 60 ;
ap= 0 ;
lv= 1 ;
q_lv= 1 ;
}
}
|
在此之中,父类的属性和方法 子类都可以继承到并 直接调用,简洁了代码,后期维护的过程中也不容易出错
总结
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注服务器之家的更多内容!
原文链接:https://blog.csdn.net/wxbbbbb/article/details/119046551