學習java的tips(不斷更新)

自己在學Java的時候先從命令行編譯、執行入手。所以首先接觸到了一些關於命令行指令的知識。

1.命令行指令總結(更新中)

1.1.1

進入命令行界面:快捷鍵windows+R-->輸入cmd

1.1.2

進入到命令行潔面後如果輸入可能會有個比較礙眼的輸入法問題,解決方法:Ctrl+空格

1.2.1

查看Java的版本:在進入命令行界面後輸入java,然後回車。

1.2.2

每次打開命令行,它的地址默認是C盤。可以輸入 d:  然後回車可以轉到D盤。或者輸入cd d:路徑1\路徑2\路徑3\路徑4然後回車。

1.2.3

dir,可以顯示當前目錄下的文件信息(文件名,修改時間,大小等)。

1.2.4

cd ..   可以返回上一級目錄。

1.2.5

命令行太多,顯示的太亂的時候可以使用cls清屏。

1.3.1

編譯指令:在.java文件所在目錄下輸入javac -encoding utf-8 文件名.java,然後回車就可以編譯當前源代碼。( 在某些版本jdk中不自動識別中文,尤其是註釋中的中文,加上-encoding utf-8就可以解決這個問題 )

1.3.2

執行指令:同樣是和編譯後得到的.class文件在同一目錄下,輸入java 文件名,然後回車就行。不用輸入.java

2.Java的封裝特性:

2.1

訪問控制修飾符:Java提供了四種訪問修飾符號控制方法和變量的訪問權限。

2.1.1

public(公開級別):用public修飾,對外公開。

2.1.2

protected(受保護級別):用protected修飾,對子類和同一個包中的類公開。

2.1.3

默認級別:沒有修飾符,相同一個包的類公開。

2.1.4

private(私有級別):用private修飾,只有類本身可以訪問,不對外公開。

3.Java的繼承

3.1

繼承的注意事項:

①子類最多隻能繼承一個父類(指的是直接繼承)

②java中所有類都是Object類的子類

③如果不希望父類中某些屬性或方法被子類繼承,則需將該屬性或方法的類型改爲私有private即可

④繼承語句:A extends B(A繼承了B的某些內容)

4.Java的方法重載和方法的覆蓋

4.1方法重載

4.1.1方法重載的引入

問題1:編寫一段代碼比較兩個整數的大小,返回較大的數值。

問題2:編寫一段代碼比較兩個float數的大小,返回較大的數值。

如果不適用“方法重載”那麼程序需要寫成下面的樣子。

public class Demo2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Abc abc=new Abc();
		System.out.println(abc.getMaxint(2,5));//比較兩個整數2,5的大小
		System.out.println(abc.getMaxfloat(2.1f,5.4f));//比較兩個小數2.1,5.4的大小
	}

}
class Abc
{
	//返回較大的整數
	public int getMaxint(int i,int j)
	{
		if(i>j)
		{
			return i;
		}
		else
		{
			return j;
		}
	}
	
	//返回較大的float數
	public float getMaxfloat(float i,float j)
	{
		if(i>j)
		{
			return i;
		}
		else
		{
			return j;
		}
	}
}

可以看到getMaxint與getMaxfloat兩個方法的實現是很像的,邏輯是一樣的,不同的是輸入變量的類型和返回值的類型。如果就是按照上面的例子那麼調用的時候會比較麻煩,需要人爲的判斷自己要比較的兩個數的類型是int還是float,然後決定要是用哪個方法。

有沒有一種方法使得:函數名一樣,返回的類型不同或者輸入的類型、輸入的變量順序不同(還是有點區別的)?!

有的!!!“方法重載”(overload)。

4.1.2 方法重載的注意事項

① 方法名相同

② 方法的參數類型,個數,(類型的)順序至少有一項不同(強制)

③ 方法的返回類型可以不同(不強制)(僅僅是返回類型不一樣,不能夠構成重載)

④ 方法的修飾符可以不同(不強制)(僅僅是返修飾符不一樣,不能夠構成重載)

4.1.3 方法重載的具體實現

public class Demo2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Abc abc=new Abc();
		System.out.println(abc.getMax(2,5));//比較兩個整數2,5的大小
		System.out.println(abc.getMax(2.1f,5.4f));//比較兩個小數2.1,5.4的大小
	}

}
class Abc
{
	//返回較大的整數
	public int getMax(int i,int j)
	{
		if(i>j)
		{
			return i;
		}
		else
		{
			return j;
		}
	}
	
	//返回較大的float數
	public float getMax(float i,float j)
	{
		if(i>j)
		{
			return i;
		}
		else
		{
			return j;
		}
	}
}

4.2 方法的覆蓋(override)

4.2.1 方法覆蓋的引入

既然子類可以繼承父類,這樣可以提高代碼的複用性。但是問題來了,如果子類中的方法和父類中的方法在實現上是有區別的應該怎麼辦?重新再子類寫一個完全不同的方法嗎?!答案自然是不必。

4.2.3方法的覆蓋

問題:要求寫三個類,貓貓、狗狗、豬豬,這三個東東都是動物,動物作爲一個很大的類別必然存在一些相同的特點。根據類的抽象特徵,我們可以把它們相同點提取出來形成一個父類Animal,然後再繼承,寫出貓、狗、豬三個子類。問題的核心怎麼解決子類和父類方法的異同!!!

方法覆蓋(override):簡單地說,方法的覆蓋就是子類有一個方法,和父類的某個方法的名稱、返回類型、參數一樣,那麼我們就說子類的這個方法覆蓋了父類的方法。比如下面的例子中Cat類中cry方法就是覆蓋了Animal類的cry方法。

//Animal 類
class Animal
{
	int age;
	String name;
	//都會叫(將要被覆蓋的方法)
	public void cry()
	{
		System.out.println("我是動物,不知道怎麼叫!!");
	}
}
//Cat類
class Cat extends Animal
{
	//覆蓋父類“叫”的方法
	public void cry()//與父類的方法比,參數列表、返回類型、方法修飾符、方法名都一樣(問題:能不能不一樣???)
	{
		System.out.println("我是貓,我會喵喵叫!!");
	}
}
//Dog類
class Dog extends Animal
{
	//覆蓋父類“叫”的方法
	public void cry()
	{
		System.out.println("我是狗,我會汪汪叫!!");
	}
}

4.2.4 方法覆蓋的注意事項

方法的覆蓋有很多條件,總的來說有兩點要注意:

①子類方法的返回類型參數方法名稱,要和父類方法的返回類型、參數、方法名稱完全一樣,否則編譯出錯。

②子類方法不能縮小父類方法的訪問權限方法修飾符的問題!)

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