中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

發(fā)布消息做任務(wù)的網(wǎng)站網(wǎng)絡(luò)推廣培訓(xùn)課程內(nèi)容

發(fā)布消息做任務(wù)的網(wǎng)站,網(wǎng)絡(luò)推廣培訓(xùn)課程內(nèi)容,萬(wàn)網(wǎng)空間存放兩個(gè)網(wǎng)站,網(wǎng)站后臺(tái)賬號(hào)密碼破解目錄 1、接口新特性1.1 JDK8的新特性1.2 JDK9的新特性 2、代碼塊2.1 代碼塊的定義2.2 代碼塊的分類 3、內(nèi)部類3.1 內(nèi)部類的定義3.2 內(nèi)部類成員訪問(wèn)3.3 學(xué)習(xí)內(nèi)部類的原因3.4 內(nèi)部類的分類3.4.1 成員內(nèi)部類3.4.2 靜態(tài)內(nèi)部類3.4.3 局部?jī)?nèi)部類3.4.4 匿名內(nèi)部類(1&#x…

目錄

  • 1、接口新特性
    • 1.1 JDK8的新特性
    • 1.2 JDK9的新特性
  • 2、代碼塊
    • 2.1 代碼塊的定義
    • 2.2 代碼塊的分類
  • 3、內(nèi)部類
    • 3.1 內(nèi)部類的定義
    • 3.2 內(nèi)部類成員訪問(wèn)
    • 3.3 學(xué)習(xí)內(nèi)部類的原因
    • 3.4 內(nèi)部類的分類
      • 3.4.1 成員內(nèi)部類
      • 3.4.2 靜態(tài)內(nèi)部類
      • 3.4.3 局部?jī)?nèi)部類
      • 3.4.4 匿名內(nèi)部類
        • (1)定義:
        • (2)使用場(chǎng)景:
  • 4、Lambda表達(dá)式
    • 4.1 概述
    • 4.2 案例
    • 4.3 注意事項(xiàng)
    • 4.4 Lambda表達(dá)式的省略寫法
    • 4.5 Lambda表達(dá)式和匿名內(nèi)部類的區(qū)別
  • 5、窗體、組件、事件
    • 5.1 窗體
    • 5.2 組件
      • 5.2.1 按鈕組件Jbutton
      • 5.2.2 文本組件Jlabel
    • 5.3 事件
    • 5.4 適配器設(shè)計(jì)模式
    • 5.5 模板設(shè)計(jì)模式

1、接口新特性

1.1 JDK8的新特性

在這里插入圖片描述

之前說(shuō)過(guò),接口里面只能是抽象方法,但是JDK8為何要修改成允許定義帶方法體的方法呢,原因是什么呢?
答:如果系統(tǒng)要升級(jí)版本2,那么在接口中再新加抽象方法時(shí),會(huì)導(dǎo)致以前的接口實(shí)現(xiàn)對(duì)象報(bào)錯(cuò),因此JDK8改成接口中可以定義有方法體的方法,就是為了解決:豐富接口功能的同時(shí),又不需要更改實(shí)現(xiàn)類的代碼。,如下圖:
在這里插入圖片描述

下面再看下JDK8是怎么做的:
在這里插入圖片描述
在這里插入圖片描述

1.2 JDK9的新特性

在這里插入圖片描述

為什么JDK9允許定義私有方法呢?
答:
在這里插入圖片描述

下面看看JDK9是如何做的:
在這里插入圖片描述

2、代碼塊

2.1 代碼塊的定義

在這里插入圖片描述

2.2 代碼塊的分類

在這里插入圖片描述

package com.itheima.vo;public class Student {//隨著類的加載而加載,多用于數(shù)據(jù)初始化static {System.out.println("Student類的靜態(tài)代碼塊...");}//編譯時(shí),會(huì)分散到每個(gè)構(gòu)造方法的第一行{System.out.println("Student類的構(gòu)造代碼塊...");}public Student(){//現(xiàn)在電腦內(nèi)存都很大了,所以一般不會(huì)使用局部代碼塊提前釋放內(nèi)存{System.out.println("局部代碼塊...");}System.out.println("Student類的構(gòu)造方法...");}
}

注:同步代碼塊多線程會(huì)使用到,這個(gè)放多線程介紹。

3、內(nèi)部類

3.1 內(nèi)部類的定義

在這里插入圖片描述
下面是一個(gè)例子:

package com.itheima.inner;public class InnerTest {public static void main(String[] args) {Outer.Inner in = new Outer().new Inner();//創(chuàng)建內(nèi)部類對(duì)象in.show();//調(diào)用內(nèi)部類方法}
}class Outer{class Inner{int num = 11;public void show(){System.out.println("show...");}}
}

3.2 內(nèi)部類成員訪問(wèn)

在這里插入圖片描述

看下面這三個(gè)變量,第一個(gè)是外部類成員變量、第二個(gè)是內(nèi)部類成員變量、第三個(gè)是方法里的變量,現(xiàn)在的問(wèn)題是,如何分別訪問(wèn)他們?nèi)齻€(gè)?
答:看代碼

class Outer{int num = 11;//外部類成員變量class Inner{int num = 22;//內(nèi)部類成員變量public void show(){int num = 33;//方法里的變量System.out.println(num); //33System.out.println(this.num); //22System.out.println(Outer.this.num); //11}}
}

注:
1、方法里的變量:直接訪問(wèn),即就近原則;
2、內(nèi)部類成員變量:使用this關(guān)鍵字;
3、外部類成員變量:使用外部類名稱.this訪問(wèn)。

3.3 學(xué)習(xí)內(nèi)部類的原因

在這里插入圖片描述

3.4 內(nèi)部類的分類

在這里插入圖片描述

3.4.1 成員內(nèi)部類

如下所示的Inner就是成員內(nèi)部類:

class Outer{class Inner{int num = 11;public void show(){System.out.println("show...");}}
}

3.4.2 靜態(tài)內(nèi)部類

在這里插入圖片描述

注:其實(shí)可以發(fā)現(xiàn),靜態(tài)內(nèi)部類與成員內(nèi)部類主要的區(qū)別是,創(chuàng)建對(duì)象不同。記住一點(diǎn):只要是靜態(tài)的,都是使用類名來(lái)調(diào)用,理解了這一點(diǎn),不用刻意記也能知道靜態(tài)內(nèi)部類是怎么創(chuàng)建的。

3.4.3 局部?jī)?nèi)部類

局部?jī)?nèi)部類是指:放在方法、代碼塊、構(gòu)造器等執(zhí)行體中的類。
下面是一個(gè)例子:

class A{public void show(){//B是一個(gè)局部?jī)?nèi)部類class B{int num;}}
}

局部?jī)?nèi)部類只有在調(diào)用此代碼塊時(shí)才會(huì)調(diào)用到,因此雞肋,使用較少。

3.4.4 匿名內(nèi)部類

(1)定義:

在這里插入圖片描述

注:

  • new 類名(){}:代表繼承這個(gè)類
  • new 接口名(){}:代表實(shí)現(xiàn)這個(gè)類
(2)使用場(chǎng)景:

如果發(fā)現(xiàn)在調(diào)用一個(gè)方法時(shí),此方法的參數(shù)是一個(gè)接口類型,那么有兩種辦法解決:
1、定義一個(gè)此接口的實(shí)現(xiàn)類并重寫此方法,然后new這個(gè)實(shí)現(xiàn)類,最后調(diào)用這個(gè)方法;
2、使用匿名內(nèi)部類,即new 接口名(){}。

看下面的例子:
在這里插入圖片描述
可以發(fā)現(xiàn)第二種方法很簡(jiǎn)潔,因此這就是匿名內(nèi)部類的使用場(chǎng)景。

對(duì)于上述的兩種方法,要如何選擇呢?
答:如果一個(gè)接口的抽象方法很少,則推薦使用匿名內(nèi)部類,反之使用定義接口實(shí)現(xiàn)類的這種方法比較簡(jiǎn)潔。

4、Lambda表達(dá)式

4.1 概述

在這里插入圖片描述

4.2 案例

public class InnerTest {public static void main(String[] args) {//這是匿名內(nèi)部類useInnerA(new InnerA() {@Overridepublic void show() {System.out.println("我是匿名內(nèi)部類...");}});//使用Lambda表達(dá)式,簡(jiǎn)化匿名內(nèi)部類useInnerA(()->{System.out.println("我是使用Lambda表達(dá)式的匿名內(nèi)部類...");});}//這是一個(gè)形參類型為接口的方法public static void useInnerA(InnerA a){a.show();}
}interface InnerA{void show();
}

4.3 注意事項(xiàng)

在這里插入圖片描述

在這里插入圖片描述

總結(jié):Lambda表達(dá)式只能簡(jiǎn)化只有一個(gè)抽象方法的匿名內(nèi)部類。

4.4 Lambda表達(dá)式的省略寫法

在這里插入圖片描述
下面我們一條一來(lái)看:

  • 參數(shù)類型可以省略不寫:
//使用Lambda表達(dá)式,參數(shù)類型可以省略
useInnerA((a, b) -> {System.out.println("我是使用Lambda表達(dá)式的匿名內(nèi)部類...");});
  • 只有一個(gè)參數(shù),則參數(shù)類型可以省略不寫,同時(shí)()也可以省略
//使用Lambda表達(dá)式,只有一個(gè)參數(shù),則參數(shù)類型可以省略不寫,同時(shí)()也可以省略
useInnerA(a -> {System.out.println("只有一個(gè)參數(shù),則參數(shù)類型可以省略不寫,同時(shí)()也可以省略...");});
  • Lambda表達(dá)式的方法體只有一行代碼,大括號(hào)和分號(hào)都可省略,同時(shí)如果是return則必須省略。
//Lambda表達(dá)式的方法體只有一行代碼,大括號(hào)和分號(hào)都可省略,同時(shí)如果是return則必須省略。
//返回值為字符串類型,只需要寫字符串即可,需要省略return語(yǔ)句。
useInnerA(a-> "我是使用Lambda表達(dá)式的匿名內(nèi)部類...");

4.5 Lambda表達(dá)式和匿名內(nèi)部類的區(qū)別

在這里插入圖片描述

5、窗體、組件、事件

5.1 窗體

在這里插入圖片描述

import javax.swing.*;public class JFrameTest {public static void main(String[] args) {//創(chuàng)建窗體對(duì)象JFrame jf = new JFrame();//設(shè)置窗體大小jf.setSize(511, 511);//修改窗體的關(guān)閉模式jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設(shè)置窗體標(biāo)題jf.setTitle("大哥的第一個(gè)窗口");//設(shè)置窗體可見jf.setVisible(true);}
}

5.2 組件

在這里插入圖片描述

在這里插入圖片描述

5.2.1 按鈕組件Jbutton

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
看下面代碼:

package com.itheima.frame;import javax.swing.*;public class JFrameTest {public static void main(String[] args) {//1、窗體對(duì)象//創(chuàng)建窗體對(duì)象JFrame jf = new JFrame();//設(shè)置窗體大小jf.setSize(511, 511);//修改窗體的關(guān)閉模式jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設(shè)置窗體標(biāo)題jf.setTitle("我是標(biāo)題");//取消窗體的默認(rèn)布局jf.setLayout(null);//2、按鈕對(duì)象//2.1 創(chuàng)建按鈕對(duì)象JButton jb = new JButton("確定");jb.setBounds(51,51,111,111);//2.2 將按鈕對(duì)象添加到面板對(duì)象當(dāng)中jf.getContentPane().add(jb);//設(shè)置窗體可見jf.setVisible(true);}
}

在這里插入圖片描述

5.2.2 文本組件Jlabel

在這里插入圖片描述

在這里插入圖片描述

5.3 事件

在這里插入圖片描述

在這里插入圖片描述

  • 動(dòng)作監(jiān)聽:
    在這里插入圖片描述
package com.itheima.action;import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;public class ActionTest {public static void main(String[] args) {//1、窗體對(duì)象//創(chuàng)建窗體對(duì)象JFrame jf = new JFrame();//設(shè)置窗體大小jf.setSize(511, 511);//修改窗體的關(guān)閉模式jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設(shè)置窗體標(biāo)題jf.setTitle("我是標(biāo)題");//取消窗體的默認(rèn)布局jf.setLayout(null);//2、按鈕對(duì)象//2.1 創(chuàng)建按鈕對(duì)象JButton jb = new JButton("確定");jb.setBounds(51,51,111,111);//2.2 將按鈕對(duì)象添加到面板對(duì)象當(dāng)中jf.getContentPane().add(jb);//3、事件監(jiān)聽jb.addActionListener(new AbstractAction() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("我被點(diǎn)擊了");}});//設(shè)置窗體可見jf.setVisible(true);}
}
  • 鍵盤事件:
    在這里插入圖片描述
package com.itheima.action;import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;public class KeyActionTest {public static void main(String[] args) {//1、窗體對(duì)象//創(chuàng)建窗體對(duì)象JFrame jf = new JFrame();//設(shè)置窗體大小jf.setSize(511, 511);//修改窗體的關(guān)閉模式jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設(shè)置窗體標(biāo)題jf.setTitle("我是標(biāo)題");//取消窗體的默認(rèn)布局jf.setLayout(null);//鍵盤事件jf.addKeyListener(new KeyListener() {@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {//鍵盤按下時(shí)觸發(fā)事件int keyCode = e.getKeyCode();if (keyCode == 37){System.out.println("左移動(dòng)業(yè)務(wù)...");} else if (keyCode == 38) {System.out.println("上移動(dòng)業(yè)務(wù)...");} else if (keyCode == 39) {System.out.println("右移動(dòng)業(yè)務(wù)...");} else if (keyCode == 40) {System.out.println("下移動(dòng)業(yè)務(wù)...");}}@Overridepublic void keyReleased(KeyEvent e) {//鍵盤松開時(shí)觸發(fā)事件
//                System.out.println("鍵盤松開了...");}});//設(shè)置窗體可見jf.setVisible(true);}
}

5.4 適配器設(shè)計(jì)模式

在這里插入圖片描述

上述對(duì)適配器設(shè)計(jì)模式的描述可能不夠清晰,下面再用大白話解釋一下:

當(dāng)我們寫了一個(gè)接口后,我們會(huì)將這個(gè)接口進(jìn)行實(shí)現(xiàn)。在進(jìn)行一個(gè)實(shí)現(xiàn)時(shí),我們發(fā)現(xiàn)無(wú)論怎么樣,這個(gè)實(shí)現(xiàn)類是一定要重寫接口里的所有方法的,那有什么方法只重寫想要的方法呢,這個(gè)就是適配器要解決的問(wèn)題。

  • 解決思路:

先編寫一個(gè)適配器(抽象方法),讓適配器來(lái)實(shí)現(xiàn)這個(gè)接口,然后我們要寫的實(shí)現(xiàn)類只需要繼承適配器就可以了,這樣我們需要實(shí)現(xiàn)哪個(gè)方法就重寫哪個(gè)即可。
如下所示::
在這里插入圖片描述

  • 解決步驟:

在這里插入圖片描述

5.5 模板設(shè)計(jì)模式

在這里插入圖片描述

上面的陳述可能還不是太清晰,下面再通俗的解釋一下:

模板設(shè)計(jì)模式,其實(shí)就是先寫一個(gè)抽象類,然后在抽象類里寫一個(gè)模板方法,依次調(diào)用業(yè)務(wù)邏輯代碼,但是發(fā)現(xiàn)有些業(yè)務(wù)邏輯代碼并不通用,于是把這些不通用的代碼抽為一個(gè)或者幾個(gè)方法,然后將這幾個(gè)方法定義為抽象方法,讓子類去實(shí)現(xiàn),這樣子類就會(huì)有各自的業(yè)務(wù)邏輯,這個(gè)就是模板設(shè)計(jì)模式。

下面看一段代碼:

package com.itheima.design.template;public abstract class CompositionTemplate {/*** write方法是模板,但是里面的body是隨著每個(gè)實(shí)現(xiàn)類的不同而不同,因此需要定義為抽象方法*/public void write(){System.out.println("我的爸爸");body();System.out.println("啊~ 這就是我的爸爸~");}abstract void body();
}public class Tom extends CompositionTemplate{@Overridevoid body() {System.out.println("我的爸爸是一個(gè)很嚴(yán)肅的人,每天工作很長(zhǎng)時(shí)間。。。");}
}public class Test {public static void main(String[] args) {Tom t = new Tom();t.write();}
}輸出:我的爸爸
我的爸爸是一個(gè)很嚴(yán)肅的人,每天工作很長(zhǎng)時(shí)間。。。
啊~ 這就是我的爸爸~Process finished with exit code 0

注意:上述代碼中,要是子類重寫了write方法,那豈不是不遵循當(dāng)初定義的模板了?為了防止重寫write方法,可以把write方法定義為最終的,即前面加關(guān)鍵字final,如下所示:

public abstract class CompositionTemplate {/*** write方法是模板,但是里面的body是隨著每個(gè)實(shí)現(xiàn)類的不同而不同,因此需要定義為抽象方法*/public final void write(){//定義為最終的,防止重寫System.out.println("我的爸爸");body();System.out.println("啊~ 這就是我的爸爸~");}abstract void body();
}

但其實(shí)業(yè)務(wù)代碼中一般不會(huì)這么寫死,因?yàn)槿f(wàn)一你寫的模板確實(shí)不適合人家的業(yè)務(wù)需求呢,那豈不是壞大事了。

http://www.risenshineclean.com/news/57271.html

相關(guān)文章:

  • 如何引用網(wǎng)站圖片東莞網(wǎng)站設(shè)計(jì)公司排名
  • 池州市住房和城鄉(xiāng)建設(shè)委員會(huì)網(wǎng)站模板建站的網(wǎng)站
  • 寧波網(wǎng)站設(shè)計(jì)建站服務(wù)公司搜索引擎優(yōu)化的作用是什么
  • 網(wǎng)站優(yōu)怎么做百度一下百度網(wǎng)頁(yè)版
  • 做網(wǎng)站二維碼網(wǎng)絡(luò)推廣怎么學(xué)
  • 免費(fèi)搭建業(yè)務(wù)網(wǎng)站阿里云云服務(wù)平臺(tái)
  • 服務(wù)器租用網(wǎng)站模板寧波seo網(wǎng)絡(luò)推廣軟件系統(tǒng)
  • php裝飾公司網(wǎng)站源碼云南seo網(wǎng)站關(guān)鍵詞優(yōu)化軟件
  • 哪個(gè)網(wǎng)站做黑色星期五訂酒店活動(dòng)如何做網(wǎng)站設(shè)計(jì)
  • 咖啡網(wǎng)站設(shè)計(jì)模板有什么好的網(wǎng)站嗎
  • 常州市城鄉(xiāng)建設(shè)學(xué)院網(wǎng)站如何在百度推廣自己的產(chǎn)品
  • 有沒有專門做牛仔的網(wǎng)站谷歌引擎搜索入口
  • 政府網(wǎng)站建設(shè)運(yùn)維情況自查沈陽(yáng)seo關(guān)鍵詞排名優(yōu)化軟件
  • 建設(shè)醫(yī)療網(wǎng)站怎樣注冊(cè)一個(gè)自己的平臺(tái)
  • 臨沂網(wǎng)站建設(shè)設(shè)計(jì)公司小紅書廣告投放平臺(tái)
  • 做早餐燒菜有什么網(wǎng)站seo綜合查詢是什么
  • 內(nèi)網(wǎng)網(wǎng)站建設(shè)方案廣告視頻
  • 杭州做網(wǎng)站需要多少錢站長(zhǎng)統(tǒng)計(jì)網(wǎng)站統(tǒng)計(jì)
  • 艾辰做網(wǎng)站黑帽seo技巧
  • 有沒有專業(yè)收費(fèi)做網(wǎng)站優(yōu)化的數(shù)字化營(yíng)銷
  • 塘下網(wǎng)站建設(shè)深圳網(wǎng)絡(luò)推廣公司排名
  • 凡科網(wǎng)做的網(wǎng)站保存后就上傳了嗎深圳網(wǎng)絡(luò)推廣渠道
  • 網(wǎng)站制作哪家實(shí)惠seo權(quán)重優(yōu)化軟件
  • 深圳網(wǎng)站維護(hù)優(yōu)化百度識(shí)別圖片找圖
  • 單位加強(qiáng)網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣自學(xué)
  • 徐州做網(wǎng)站需要多少錢seo自媒體培訓(xùn)
  • 如何寫代碼做網(wǎng)站百度關(guān)鍵詞排名軟件
  • 滕州做網(wǎng)站網(wǎng)店代運(yùn)營(yíng)騙局流程
  • 做網(wǎng)站的公司都是小公司百度關(guān)鍵詞模擬點(diǎn)擊軟件
  • 好的網(wǎng)站具備什么條件找代寫文章寫手