日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

学习Java笔记(一)

發布時間:2023/12/19 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习Java笔记(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.父類方法使用private聲明可以進行覆寫嗎?
答:不可以。

class A{public void fun(){this.print();}private void print(){System.out.println("111");} } class B extends A{public void print(){ System.out.println("222");} } public class TestDemo {public static void main(String[] args) {B b = new B();b.fun();} } 運行結果:111

這里無論B類中的方法使用public,default或者private,輸出結果都一樣。利用快捷鍵在B類中選擇重寫方法,沒有選擇重寫A類中的print方法的,所以不可以覆寫父類中的private聲明的方法。子類中的這個方法相當于定義了一個新的方法,這一方法與父類無關。
2.父子類對象的轉換
-向上轉型:子類對象變為父類對象(自動轉換)
格式:父類 父類對象 = 子類實例
目的:參數統一,但是通過子類實例化后的父類對象所能調用的方法只能是父類中定義過的方法。
結果為由父類對象調用方法,根據子類是否覆寫了父類中的方法來執行,如果子類覆寫了,那么調用的是子類覆寫過的方法。,否則調用父類中定義的方法。但是對象一旦向上轉型,那么就無法調用子類原本的特有的方法和屬性。

-向下轉型:父類對象變為子類對象(強制轉換)
格式:子類 子類對象 = (子類)父類實例
目的:父類對象要調用實例化它的子類中的特殊方法, 前提條件是必須發生向上轉型后才可以發生向下轉型,容易帶來安全隱患。

向下轉型過程中要注意的是: 情況一:如果父類引用的對象引用的是指向的子類對象,那么在向下轉型的過程中是安全的,也就是編譯是不會出錯誤的。** 情況二:如果父類引用的對象是父類本身,那么在向下轉型的過程中是不安全的,編譯不會出錯,但是運行時會出現java.lang.classcastException的錯誤,可以使用instanceof來避免出此類錯誤。 ---------------------** 作者:littleAsuna 來源:CSDN 原文:https://blog.csdn.net/baidu_26954625/article/details/90581757 java.lang.classcastException指的是類轉換異常,指的是兩個沒有關系的類對象強制發生向下轉型時所帶來的異常。 對象 instanceof 類 返回Boolean型 如果某個對象是某個類的實例,則返回true,否則返回false。

基本的向上轉型和向下轉型:

class A{public void print(){System.out.println("1");} } class B extends A{public void print(){System.out.println("2");}} class C extends A{public void print(){System.out.println("3");} } public class TestDemo {public static void main(String[] args) {//只要是A類的子類都可以使用向上轉型,由A類接收A a1 = new B(); //向上轉型A a2 = new C(); //向上轉型B b1 = (B) a1; //向下轉型a1.print();a2.print();b1.print();} }

向下轉型調用子類中的特殊功能:

class A{public void print(){System.out.println("1");} } class B extends A{public void print(){System.out.println("2");}public void funB(){System.out.println("B擴充的方法");} } public class TestDemo{public static void main(String[] args) {fun(new B());}private static void fun(A a) { //統一參數if(a instance of B){B b = (B) a; //因為要調用子類的特殊功能,需要向下轉型b.funB(); //調用子類擴充的方法} } }

3.public class和class的區別

public class:文件名稱必須與類名稱保持一致在一個.java文件中只能有一個public class聲明,可以被不同的包訪問。 class:文件名稱與類名稱可以不一致,一個.java文件中可以有多個class定義,編譯后會形成多個.class文件,只能被此類所在的包訪問。

4.java命名規范

類名稱:每個單詞的開頭首字母大寫。 變量/方法:第一個單詞的首字母小寫,之后每個單詞的首字母大寫。 常量名稱:每個字母大寫。 包名稱:所有字母小寫。

5.單例設計模式與多例設計模式
單例設計模式(只有一個實例化對象):

類中的全部屬性應該封裝,封裝后要想取得屬性則要編寫getter方法,這時getter方法應該由類名稱直接調用,且為static,static定義的屬性特點是由類名稱直接調用,且在沒有實例化對象的時候可以調用。 class Singleton{private final static Singleton instance = new Singleton();private Singleton(){//構造方法私有化}public void print(){System.out.println("hello world!");}public static Singleton getInstance() { //取得本類的對象return instance;}} public class SingletonTestDemo {public static void main(String[] args) {Singleton inst = null; //聲明對象inst = Singleton.getInstance();inst.print();} }

多例設計模式(多個對象):

class Sex{private String title;private static final Sex MALE = new Sex("男");private static final Sex FEMALE = new Sex("女");private Sex(String title) {this.title = title;}@Overridepublic String toString() {return this.title;}public static Sex getInstance(String ch){switch(ch){case "man":return MALE;case "female":return FEMALE;default:return null;}} } public class 多例設計模式 {public static void main(String[] args) {Sex sex = Sex.getInstance("man");System.out.println(sex);} }

總結

以上是生活随笔為你收集整理的学习Java笔记(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。