2020年6月學習記錄

2020年6月26日

java

類方法不能調用實例變量

在這裏插入圖片描述

類方法調用實例變量只能通過在方法中聲明一個實例後在調用,否則只能將實例變量改變爲類變量

對象初始化:

構造方法類似於C++的構造函數,方法名和類名相同,不返回返回類型,通常爲公有的 引用類型的初值是null,基本數據類型的初始值是0或0.0 構造方法也可以重載(參數表必須不同) 像C++一樣,不聲明構造方法,編譯器會構造默認構造方法(在聲明構造方法之後不會自動生成) 可以使用this關鍵字在一個構造方法中調用另一個構造方法:this("",99999,0.0f),一般是在參數少的構造方法中調用參數最多的構造方法。 final實例變量可以在定義時給出初始值,也可以在構造方法中初始化。 但是final類變量必須在聲明的同時初始化。

內存回收

在這裏插入圖片描述

沒有引用指向new Book(3)對象,所以會被回收

枚舉類

在這裏插入圖片描述

有限
在這裏插入圖片描述

枚舉類不能有public的構造方法
在這裏插入圖片描述

import java.util.*;
enum Season
{
    dgh,shi,zuibang,de
}
class test  
{
	public static void main (String[] args) throws java.lang.Exception
	{
	    
	    for(Season s : Season.values())
	        System.out.println(s);
		
	}
}

dgh
shi
zuibang
de

重寫toString()方法

import java.util.*;
enum Season
{
    dgh,shi,zuibang,de
}
class test  
{
    String name;
    public String toString()
    {
        return "這個對象這個對象這個對象name:"+name;
    }
    public test(String name)
    {
        this.name = name;
    }
	public static void main (String[] args) throws java.lang.Exception
	{
	    
	    test t = new test("dgh");
	    System.out.println(t);
		
	}
}

這個對象這個對象這個對象name:dgh

2020年6月27日06:36:54

java

類的繼承:

java中只支持單繼承,一個類只能有一個直接超類;子類包括與超類相同的接口,可以具有更多的方法和數據成員;class ClassName extends SuperClassName{};;person->Employee->Manager;

隱藏和覆蓋

隱藏和覆蓋:子類可以重新定義超類的方法,超類的同名方法或同名數據成員會被覆蓋,也就是隱藏了。如果重複聲明,直接訪問是子類的成員,使用super.x是訪問超類的屬性

靜態成員不被繼承,但是子類都可以訪問超類的靜態成員

派生類必須覆蓋基類中的抽象的方法,否則派生類自身也成爲了抽象類;final方法不需覆蓋;static方法不可覆蓋;使用super.func()就可以調用超類的方法

import java.io.*;
class A{
    int x = 1;
}
class B extends A
{
    int x = 10;
    public void print()
    {
        super.x++;
        System.out.println(super.x);
    }
}
class test  
{
	public static void main (String[] args) throws java.lang.Exception
	{
	    B b = new B();
	    b.print();
// 		System.out.println("hi");
	}
}

Object類

在這裏插入圖片描述

Object類:getClass()方法;toString()方法;同一:兩個引用是否指向同一對象;相等:兩個對象相等;a==b用於判斷兩個引用是否指向同一個對象,不能判斷對象是否相等;等效於a.equals(b)也是判斷同一

在對象被垃圾回收器回收之前,需要自動調用對象的finalize方法

clone()方法,在Object中是protected的,所以需要覆蓋爲public

getClass()方法可以返回對象的類,
它是一個final方法
可以通過函數參數obj.getClass().getName()來查詢類的各種信息,如名字,靜態數據等,這裏obj.getClass()相當於類名、

2020年6月28日

java

終結類和終結方法:

被final修飾;終結類不能繼承;終結方法不能被覆蓋;

在這裏插入圖片描述

參數表不一樣不算重寫
在這裏插入圖片描述

不能修飾interface的接口

在這裏插入圖片描述

抽象方法、

抽象類:類名前添加abstract;可包含常規類的任何成員;包括非抽象方法;沒有實例對象的類,不能使用new進行實例化,只能作爲超類;抽象方法:僅有方法原型,沒有方法體,具體實現有子類的各自類聲明中完成;要寫抽象方法,必須在抽象類中;具體方法:1、聲明一個抽象類,在類中聲明一個抽象方法,方法不具體實現,2、在子類中具體實現該抽象方法。

只有接口類可以包含接口方法

泛型

泛型:將類型參數化;泛型的類、接口、方法;class A ;使用時A a = new A();可以使用?作爲通配符

在這裏插入圖片描述

在這裏插入圖片描述

類的組合:

是一種類的重用機制,將已存在類的對象放在新類中;可能繼承和組合都用得上;
小結:類的重用:1、繼承和組合;2、Object類的主要方法,是所有類的超類;3、終結方法不許覆蓋;4、在最頂層的抽象超類中聲明原型,無法實現方法體;

接口與多態:

接口的概念和編寫;接口就是純的抽象類;接口中全部都是抽象方法,沒有具體實現;實現多繼承、具有統一的對外服務接口;多態:可以將子類對象充當超類對象用,統一發送相同的消息,不同對象對其的響應方式是不同的;

在這裏插入圖片描述

接口只提供設計,不提供具體實現,是一個純的抽象類;繼承多個設計;建立類與類之間的協議;在看起來不相干的對象之間建立相同的接口;interface 接口名稱 【extends 父接口名】;接口的數據成員一定有初值且不能修改,等價於省略final關鍵字;接口中的方法必須是“抽象方法”,可以省略public 和 abstract;;接口不能實例化;語法:public class A implements 接口名稱{實現接口的抽象方法;} 可以實現多個接口,利用多繼承:在implements後面添加多個接口,可以實現多重繼承;接口與接口之間也可以有繼承關係;接口支持多繼承,在extends後面可以有多個接口;

如果是抽象類可以實現部分接口中的抽象方法,但是如果時非抽象類,必須實現所有的接口抽象方法;

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章