抽象类
定义:java抽象类在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
可以写:
成员变量、成员方法(没有方法体)、构造方法。)........
案例: 抽象代码
抽象类:
int a; //成员变量
public abstract void s7(); //抽象方法
public Mtz07(){ //无参构造
System.out.println("nice");
}
继承类:
抽象类的方法体必须被重写
@Override
public void s7() {
System.out.println("这是实现方法"+a);
}
测试类
Mtz08 m1 = new Mtz08();
m1.a = 666;
m1.s7();
输出内容:
nice
这是实现方法666
接口
定义:接口是一种特殊的抽象类,它不能包含普通方法。
接口类:
// 定义常量
public static final int number = 1;
public abstract void eat(); //抽象方法体
public default void s1(String type){ //空方法
System.out.println("这个动物是"+type);
}
public static int gets1(){ // 返回值方法体
System.out.println("返回值方法");
return number;
}
实现类:
@Override
public void eat() { //重写
System.out.println("懒猫爱吃");
}
测试类:
public static void main(String[] args) {
Mtz02 m1 = new Mtz02();
m1.eat();
m1.s1("猫");
Mtz01.gets1();
}
输出内容:
懒猫爱吃
这个动物是猫
返回值方法
那么抽象类和接口的区别是什么呢?
相同点 :(1) 都不能被实例化
(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类的方法后才能被实现。
不同点:( 1 )实现接口的关键字为implements,继承抽象类的关键字为extends。
(2)一个类可以实现多个接口,但一个类只能继承一个抽象类。
(3)接口强调特定功能的实现,而抽象类强调所属关系。
(4)接口被用于常用的功能,便于日后维护和添加删除,
抽象类更倾向于充当公共类的角色,不适用于日后重新对立面的代码删除。功能需要累积时用抽象类,不需要累积时用接口。