* 1、重載:一個類中方法之間的關係,重寫:父類方法被子類重寫
* 2、重載它對權限修飾符、返回值沒有限制。 但是重寫有。子類的權限修飾符。不能比父類小。
* 3、參數列表:重載要求參數列表不同。重寫。參數必須一致。
* 4、重載和重寫都要求 方法名一致、
接口和類之間是實現。
接口和接口之間是繼承。
接口和抽象類的區別:
* 1、接口沒有構造器。但是抽象類有。
* 2、接口中只有抽象方法,抽象類中可以有抽象方法
* 3、接口中的變量都是公共靜態常量 而且修飾符可以省略,抽象類沒有限制。
* 4、接口和抽象類都不能實例化。
接口中的兩種元素:
一個是公共的靜態的常量【修飾符都可以省略】public static final 這三個修飾符的順序是可以任意的,如static final public ; final public static
一個是公共的抽象方法。【修飾符可以省略】 默認爲public abstract
沒有構造器、
構造方法的作用:
* 初始化對象。
* 初始化對象的成員變量、
default不能跨包使用。default修飾的類不行。而成員也不行。
protected不能直接跨包使用,但是如果通過繼承,子類是可以拿到的。
* 構造器能不能被子類繼承 但是可以被子類調用。
* super(); 用於子類構造器調用父類構造器。super還可以調用父類非靜態方法;
代碼塊:[只要在代碼塊中定義的變量,就是局部變量]
* 普通代碼塊:在方法中。
* 靜態代碼塊:在類中,方法外,用static修飾。在類加載的時候,就會被調用。
* 構造代碼塊:在類中,方法外,沒有用static修飾。在創建對象的時候,被自動調用。
* 【構造方法和構造代碼塊的區別?】
* 作用都是用來初始化對象,但是構造代碼塊比構造方法先執行。但是構造方法它的辨識度高。
* 同步代碼塊:在線程中會用到,即線程鎖 synchronized,此處就是同步代碼塊。
public class Test4 {
public static void main(String[] args) {
int a = -12;
// 普通代碼塊
{
System.out.println(a);
int b = 13;
}
// System.out.println(b);
Test4 t = new Test4();
Test4 t2 = new Test4();
}
static {
System.out.println("靜態代碼塊");
}
{
System.out.println("構造代碼塊");
}
public void run() {
synchronized (new Object) {
for(;i<10;i++){
System.out.println("同步代碼塊");
}
}
}
}