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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java的static,final,代码块,内部类,抽象类,接口等

發(fā)布時(shí)間:2024/7/5 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java的static,final,代码块,内部类,抽象类,接口等 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? ??Java的static,final,代碼塊,內(nèi)部類,抽象類,接口等

?

1 static關(guān)鍵字月final關(guān)鍵字

1.1 static

static表示靜態(tài)。可以修飾屬性,方法,代碼塊內(nèi)部類等,總結(jié)如下:

?特點(diǎn)
修飾屬性

①屬于類,調(diào)用方式:類名.屬性;

②屬于所有對(duì)象的公共屬性:對(duì)象.屬性;

③類變量在類加載的時(shí)候就會(huì)加載,而且只有一份;

④類變量存儲(chǔ)在靜態(tài)域中;

⑤生命周期比成員變量長。

修飾方法

①在類加載的時(shí)候加載;

②調(diào)用:類名.方法();

③static修飾的方法叫靜態(tài)方法,靜態(tài)方法只能調(diào)用靜態(tài)成員,不能調(diào)用非靜態(tài)成員;非靜態(tài)方法可以調(diào)用靜態(tài)方法也可以調(diào)用非靜態(tài)方法;

④在static修飾的方法不能出現(xiàn)this或super關(guān)鍵字。

修飾代碼塊

①static修飾的代碼塊叫靜態(tài)代碼塊,在類加載的時(shí)候自動(dòng)執(zhí)行,給類進(jìn)行初始化,而且只執(zhí)行一次;

②一個(gè)類中可以定義多個(gè)靜態(tài)代碼塊,按順序執(zhí)行;

③靜態(tài)代碼塊只能訪問類的靜態(tài)成員,而不允許訪問實(shí)例成員。

修飾內(nèi)部類static修飾內(nèi)部類。普通類是不允許聲明為靜態(tài)的,只有內(nèi)部類才可以。被static修飾的內(nèi)部類可以直接作為一個(gè)普通類來使用,而不需先實(shí)例一個(gè)外部類。

1.2 final

final可以修飾屬性,方法,類,總結(jié)如下:

?特點(diǎn)
修飾類(final class 類名{})表示該類是一個(gè)最終類,不能被繼承
修飾方法(final 返回值類型 方法名())表示該方法不能重寫
修飾屬性(final 屬性類型 屬性名)表示一個(gè)常量,常量一般用大寫字母表示

給常量初始化:(1)顯示初始化賦值? final? 類型? 變量名? =? 值;

(2)靜態(tài)塊? static{}

(3)構(gòu)造塊進(jìn)行初始化? ?{}

(4)構(gòu)造器進(jìn)行初始化? ?在構(gòu)造器中賦值

?

2 代碼塊

定義:用大括號(hào)“{}”將多行代碼封裝在一起,形成一個(gè)獨(dú)立的代碼區(qū),這就構(gòu)成了代碼塊。

分類如下:

(1)普通代碼塊:方法的{} / if(){}? /? 在方法里面{局部代碼塊}

(2)構(gòu)造代碼塊:{} 寫在類中,在構(gòu)造器前執(zhí)行,創(chuàng)建一次對(duì)象就會(huì)調(diào)用一次(可多次執(zhí)行)

(3)靜態(tài)代碼塊:static{}在類加載時(shí)執(zhí)行,而且只執(zhí)行一次,會(huì)在構(gòu)造器前執(zhí)行

(4)同步代碼塊:在方法 synchronized(鎖對(duì)象){}

?

3 抽象類和抽象方法

概念:用abstract修飾的類就是抽象類(類的修飾符:final/abstract)。

抽象方法:用abstract修飾的方法就是抽象方法

特點(diǎn):

(1)抽象類不能被實(shí)例化(不能直接創(chuàng)建對(duì)象),是用來繼承的;

(2)抽象類中可以有構(gòu)造器;

(3)抽象類中可以有抽象方法也可以有非抽象方法;

(4)抽象方法不能具體實(shí)現(xiàn)(即沒有方法體);

(5)有抽象方法的類一定是抽象類,抽象類不一定要有抽象方法;

(6)抽象方法必須被繼承的子類重寫(除非子類也是抽象類,可以不用重寫父類的抽象方法;)

(7)final(不能繼承的)和abstract(用來繼承的)不能同時(shí)修飾一個(gè)類和類

public class Test {public static void main(String[] args) {//Animal a = new Animal(); // Animal a = new Dog("旺財(cái)",5,"公"); // a.eat();Test t = new Test();t.manager(new Dog("旺旺",2,"公"));t.manager(new Cat("貓咪",3));}public void manager(Animal a) {a.eat();a.run();} } abstract class Animal{String name;int age;public Animal() {super();}public Animal(String name, int age) {super();this.name = name;this.age = age;}//吃public abstract void eat();public abstract void run(); // public void show() { // System.out.println(); // }} class Dog extends Animal{String sex;public Dog(String name,int age,String sex) {super(name,age);this.sex = sex;}@Overridepublic void eat() {System.out.println("夠吃骨頭");}@Overridepublic void run() {}} class Cat extends Animal{public Cat(String name,int age) {super(name,age);}@Overridepublic void eat() {System.out.println("貓吃魚");}@Overridepublic void run() {}}

。

(8)abstract與static(靜態(tài)的),不能同時(shí)修飾一個(gè)方法。聲明static說明可以直接用類名調(diào)用該方法;聲明abstract說明需要子類重寫該方法;如果同時(shí)聲明static和abstract,用類名調(diào)用一個(gè)抽象方法肯定不行

?

4 接口

概念:Java中的接口是一系列方法的聲明,是一些方法特征的集合,一個(gè)接口只有方法的特征沒有方法的實(shí)現(xiàn),因此這些方法可以在不同的地方被不同的類實(shí)現(xiàn),而這些實(shí)現(xiàn)可以具有不同的行為(功能)。

定義語法:訪問權(quán)限修飾符?interface 接口{}

特點(diǎn):

(1)接口也是一個(gè)特殊的抽象類(不可以直接實(shí)例化),可以包含常量和抽象方法;

(2)還可以包含靜態(tài)方法和默認(rèn)方法(jdk1.8之后的特性);

(3)接口不可以定義構(gòu)造器;

(4)實(shí)現(xiàn)接口的類必須重寫接口的非抽象方法;

(5)類可以實(shí)現(xiàn)(implements)多個(gè)接口(避免類的單繼承不足問題);

(6)接口是多繼承(extends)的。

常量默認(rèn)[public static final] public static final int n=10;int m = 11; 抽象方法默認(rèn):[public abstract] public abstract void show1();void show();//一下兩個(gè)為jdk1.8的新特性 //靜態(tài)方法 static void show2() {System.out.println("接口中的靜態(tài)方法");}//實(shí)現(xiàn)接口子類去重寫(對(duì)象)default void show3() {System.out.println("默認(rèn)的方法");}

?

作用:接口就是一種實(shí)現(xiàn)功能(定義功能_方法),定義規(guī)范。

/*** @Description 定義USB接口 實(shí)現(xiàn)其功能 start() stop();* @author refuel* @version v1.0*/ public class Test {public static void main(String[] args) {//方式1 普通創(chuàng)建電腦對(duì)象調(diào)用Computer1 c = new Computer1();c.Work(new CardReader());//方式2 匿名類的對(duì)象USB u = new USB() {@Overridepublic void start() {System.out.println("匿名類的對(duì)象開始");}@Overridepublic void stop() {System.out.println("匿名類的對(duì)象結(jié)束");}};c.Work(u);//方式3 匿名類的匿名對(duì)象c.Work(new USB() {@Overridepublic void start() {System.out.println("匿名類的匿名對(duì)象結(jié)束");}@Overridepublic void stop() {System.out.println("匿名類的匿名對(duì)象結(jié)束");}});} } interface USB {void start();void stop(); } class Printer implements USB{@Overridepublic void start() {System.out.println("打印機(jī)工作");}@Overridepublic void stop() {System.out.println("打印機(jī)停止工作");}} class CardReader implements USB {@Overridepublic void start() {System.out.println("讀卡器工作");}@Overridepublic void stop() {System.out.println("讀卡器停止工作");}} class Computer1 {public void Work(USB u) {u.start();u.stop();} }

?

5 內(nèi)部類

概念:允許一個(gè)類的定義位于另一個(gè)類的內(nèi)部,前者為內(nèi)部類,后者為外部類。

分類:

(1)成員內(nèi)部類(類中):①分為靜態(tài)和非靜態(tài)的成員內(nèi)部類②定義在類的內(nèi)部,方法外③四個(gè)權(quán)限修飾符,static、final、abstract可以其進(jìn)行修飾④非靜態(tài)成員內(nèi)部類:1. 外部類 外部類對(duì)象 = new 外部類(); 2. 外部類.內(nèi)部類 內(nèi)部類對(duì)象=外部類對(duì)象.new 內(nèi)部類名();? ? ? 靜態(tài)成員內(nèi)部類:外部類.內(nèi)部類名 內(nèi)部類對(duì)象 = new 外部類.內(nèi)部類名();

(2)局部內(nèi)部類:①局部內(nèi)部類定義在方法中②定義局部內(nèi)部類的方法一般有一個(gè)返回值(局部內(nèi)部類的父類類型),返回局部內(nèi)部類型的對(duì)象。

public class Test1 {public static void main(String[] args) {//原始方式實(shí)現(xiàn)輸出產(chǎn)品的名稱和顏色Product p = new RedPen();p.getColor();System.out.println(p.getName());//局部內(nèi)部類實(shí)現(xiàn)輸出產(chǎn)品的名稱和顏色Test1 t = new Test1();t.getProduct().getColor();System.out.println(t.getProduct().getName());}public Product getProduct() {//局部內(nèi)部類 // class BlackPen implements Product { // @Override // public String getName() { // // return "黑筆"; // } // // @Override // public void getColor() { // System.out.println("黑色"); // } // } // return new BlackPen();//匿名內(nèi)部類的匿名對(duì)象return new Product() {@Overridepublic String getName() {return "藍(lán)筆";}@Overridepublic void getColor() {System.out.println("藍(lán)色");}};}}interface Product {String getName();void getColor(); } class RedPen implements Product {@Overridepublic String getName() {return "紅筆";}@Overridepublic void getColor() {System.out.println("虹色");}}

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的Java的static,final,代码块,内部类,抽象类,接口等的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。