抽象類、抽象方法(abstract抽象類)
//繼承了抽象類的子類,都必須重寫(實作)它的所有 抽象方法(一般方法不用) //除非子類也是抽象類,那就由它的子子類重寫(實作)
//abstract抽象類
//繼承了抽象類的子類,都必須重寫(實作)它的所有 抽象方法(一般方法不用)
//除非子類也是抽象類,那就由它的子子類重寫(實作)
public abstract class Action {
public abstract void doSomething(); //抽象方法
public void test(){
};
}
package com.basics.demo4;
public class A extends Action {
//重寫抽象類裡面的抽象方法
@Override
public void doSomething() {
}
}
//1、不能new這個抽象類,隻能靠子類去實作它;限制
//2、抽象類中可以寫普通的方法 //
3、抽象方法必須在抽象類中
接口(interface)
//接口都會與實作類
public interface UserService {
//接口中的所有定義的方法中其實都是抽象的 public abstract
//public abstract void add();
//等效于 void add();
//int age = 99; 等效于
//public static final int age = 99;
int age = 99;
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
函數式接口
函數式接口就是一個有且僅有一個抽象方法,但是可以有多個非抽象方法的的接口
函數式接口可以被隐式轉換為lambda表達式
實作接口
public class UserServiceImp1 implements UserService,TimeService{
//裡面是接口方法的重寫的方法
//類似可以實作多繼承 , 僞多繼承
}
作用:
1、限制
2、定義一些方法,讓不同的人實作
3、public abstract
4、public static final
5、接口不能被執行個體化,因為接口中沒有構造方法
6、可以實作多個接口
7、必須要重寫接口中的方法
抽象方法特點
abstract修飾符:
1.abstract修飾的類為抽象類,此類不能有對象,(無法對此類進行執行個體化,說白了就是不能new);
2.abstract修飾的方法為抽象方法,此方法不能有方法體(就是什麼内容不能有);
抽象類的使用特點:
1.抽象類不能有對象,(不能用new此關鍵字來建立抽象類的對象);
2.有抽象方法的類一定是抽象類,但是抽象類中不一定有抽象方法;
3.抽象類中的抽象方法必須在子類中被重寫。
接口特點
接口中的所有定義的方法中其實都是抽象的 public abstract
public abstract void add();
等效于 void add();
int age = 99; 等效于
public static final int age = 99;
接口不能被執行個體化,因為接口中沒有構造方法
類可以實作多個接口,必須要重寫接口中的方法
至于接口和抽象類的差別:
最明顯的一個差別就是他們的實作:一個是接口,一個是類
接口的實作就是去實作這個接口,而且java中一個類可以實作多個接口。 但接口裡面隻能寫接口,不能寫普通方法。
而抽象類必須通過繼承去實作,并且java中是單繼承的。 但抽象類中除了可以寫抽象方法外,還可以寫普通方法。
本人也正處于學習階段,這是本人的一些學習筆記和了解,不正确的地方還請了解和指正。