接口与抽象类的定义
接口的定义
接口,是一种规范,是一种特殊的抽象类,它里面所具备的所有方法都是抽象方法,方法用abstract修饰(abstract一般省略不写),接口中的变量全部是public static final所修饰的。
Public interface Write{
//(访问修饰符)interface(接口名)
}
抽象类的定义
抽象类,是带有(abstract)关键字修饰的类,因为它是一种不具体的概念,不可实例化(不能new),例:
Public abstract class Student{
//带有abstract关键字修饰的类,注意:不可用new创建对象
}
接口与抽象类的具体区别
接口的特点
- 接口可以实现多继承,接口多继承间可以用(子接口名 extends 父接口1,父接口2,父接口3,…)
- 接口中的量一定是public static final的(我们可以当作全局常量来看)
- 接口中的方法默认为抽象方法,省略去了(abstract)关键字,没有方法体
- 接口是一种特殊的抽象类,同样也是不可以实例化的(不能new创建对象)
- 接口可以理解为动作或者操作规范
Public interface InputStream{
//创建一个接口,令它拥有"输入"的规范,输入是一种动作,接口定义的是一种动作
void write();
//public abstract void write();
//接口中的方法都为抽象方法,没有方法体,默认省略了前面的访问修饰符(public private)和 抽象修饰符(abstract)
}
Public interface Display{
void display();
}
interface persion extends InputStream,Display{
//创建了一个persion的一个接口,然后令它继承以上两种该接口,接口之间可以多继承,用的是:extends,接口1,接口2,...;此接口便拥有上述两种接口的所有方法
}
//Public class computer{}
Public class comouter implement InputStream,Display{
//创建一个“电脑”的一个类,我们去实现上面接口中的方法,用 implement 接口1,接口2,...
void write(){
//因为接口中为抽象方法,所以要重写方法
System.out.println("已执行录入命令,可以写入!");
}
void display(){
System.out.println("已执行显示命令,已展现当前内容!");
}
}
Public class Operation extends Compter{
public static void main(String[] args){
//创建一个实现类,来测试接口的实现
write();
//已执行录入命令,可以写入!
display();
//已执行显示命令,以展示当前内容!
}
}
抽象类的特点
- 抽象类中的方法可以是抽象方法,也可以是其他方法
- 抽象类中的变量也可以包含非final的变量
- 抽象类是一种概念,不可以实例化
- 抽象类实现的是事物本身的本质
- 抽象类作为父类时,其他子类可以重写其内部的方法,来调用抽象方法
Public abstract class Animal{
//创建一个动物的抽象类,指向的是事物本身
public abstract say();
public abstract name();
public abstract color();
}
Public class Cat extends Animal{
//继承Animal,并重写里面的方法
void say(){
System.out.println("喵喵喵!");
}
//实现一下:
public static void main(String[] args){
say();
//输出:喵喵喵!
}
}
抽象类与接口的区别
在上述的特点中,我们可以清晰地看出抽象类与接口的异同,接口在运用时更像是一种规范,可以有无数的类去实现,而抽象类运用时能直观的表达出事物所具有的特点,就像上面的猫(Cat)类,猫的声音是:喵喵喵,我们在调用父类(Animal)的say方法,所以我们能跟清晰的对猫有一个更具体的一个了解,如果将父类所有的方法都实现了,那么子类便可以创建对象实例化。
抽象类及抽象方法
如果想更好的了解抽象类及抽象方法可以查看这篇文章点此跳转