java学习笔记
抽象,接口与实现
前言
这里是我在学习接口时,对知识的一些思考和总结,可能不是很专业,只是为了能够更好的理解,或许还会有一些错误,但还请谅解和纠正,谢谢
一、接口是什么?
接口可以理解为类似于类,是一种高于抽象类的类,抽象的抽象类,相当于手机里的文件夹,将彼此没有关系的多个方法包括起来,由使用者来定义这个接口的作用,使用时只需要在接口里面声明想要使用的方法,相当于规定条例,这个接口能干嘛,接口要使用还必须用(implement)来实现,接口中的声明是抽象的,要想实际使用还得规定方法具体怎么用,也就是创建方法。
二、为什么要用接口?
java中规定类只能有一个父类,即只能继承一个父类的属性和方法,比如父只能继承爷爷的特征,孩子只能继承父的特征,但不能继承爷爷的特征。
为什么呢?在Java中extends继承时用super关键字来继承,
super();
这里的super就是调用父类方法,那如果父类中有多个方法,怎么区分呢?
super后面的括号里加入变量值,java会自动识别是哪个方法;
但如果要实现多个继承,如果用super关键字,比如要调用父类和父类的父类的某个方法,用一个super根本无法区分要用的是哪个,于是就有了接口:
i
nterface x1具有a特性
interface x2具有c,d特性,继承interface x1。于是x2就具有a,c,d特性
interface x3具有f特性,继承x2,于是x3就具有了x1,x2,x3的所有特性
三、怎么用?
public interface xx1 [extends 父接口xx]{//接口声明
域类型 域名=常量值
返回值 方法名//接口体,即此接口包含的方法
}
class 类名 implements xx1 {
定义xx1中声明的方法
}
四、举个例子
这也是在学习是老师布置的一个作业,能很好地说明
public interface Biology {
abstract void breath();
}
interface Animal extends Biology{
abstract void move();
abstract void eat();
}//动物
interface Mankind extends Animal{
abstract void study();
abstract void think();
}//人类
//普通人的实现
class NormalMan implements Mankind{
public void move() {
System.out.println("我会行走");
}
public void eat() {
System.out.println("我会吃东西");
}
public void breath() {
System.out.println("我会呼吸");
}
public void study() {
System.out.println("我会学习");
}
public void think() {
System.out.println("我会思考");
}
public NormalMan() {
}//无参构造函数
private String name;
public NormalMan(String name) {
System.out.println("我叫"+name);
}//有参构造函数
}//实现所有接口
/*当然还有其他类型的人,在实现时改变这些方法的方法体就行*/
测试一下
public class Test {
public static void main(String[] a) {
NormalMan man =new NormalMan("小爱");
man.breath();
man.eat();
man.move();
man.think();
man.study();
}
}
结果
我叫小爱
我会呼吸
我会吃东西
我会行走
我会思考
我会学习
四、总结
接口的产生就是为了实现多重继承。