一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Java基礎(chǔ)語法(9)-面向?qū)ο笾惖某蓡T

 行者花雕 2020-06-01

title: Java基礎(chǔ)語法(9)-面向?qū)ο笾惖某蓡T

blog: CSDN

data: Java學(xué)習(xí)路線及視頻

G8Shge.png

1.面向過程與面向?qū)ο?/h3>
  1. 面向過程(POP) 與 面向?qū)ο?OOP)

  • 二者都是一種思想,面向?qū)ο笫窍鄬τ诿嫦蜻^程而言的。面向過程,強調(diào)的是功能行為,以函數(shù)為最小單位,考慮怎么做。面向?qū)ο螅?span style="color:CC3366">將功能封裝進對象,強調(diào)具備了功能的對象,以類/對象為最小單位,考慮誰來做。

  • 面向?qū)ο蟾訌娬{(diào)運用人類在日常的思維邏輯中采用的思想方法與原則,如抽象、分類、繼承、聚合、多態(tài)等。

    • 面向?qū)ο蟮娜筇卣?/span>

      封裝 (Encapsulation)

      繼承 (Inheritance)

      多態(tài) (Polymorphism)

  1. 面向過程

G8pdat.png
  1. 面向?qū)ο?/strong>

G8pRZn.png
  1. 面向?qū)ο蟮乃枷敫攀?/strong>

  • 程序員從面向過程的執(zhí)行者轉(zhuǎn)化成了面向?qū)ο蟮?span style="color:CC3366">指揮者

  • 根據(jù)問題需要,選擇問題所針對的現(xiàn)實世界中的實體。

  • 從實體中尋找解決問題相關(guān)的屬性和功能,這些屬性和功能就形成了概念世界中的類

  • 把抽象的實體用計算機語言進行描述,形成計算機世界中類的定義。即借助某種程序語言,把類構(gòu)造成計算機能夠識別和處理的數(shù)據(jù)結(jié)構(gòu)。

  • 類實例化成計算機世界中的對象。對象是計算機世界中解決問題的最終工具。

2.類和對象

  1. 面向?qū)ο蟮母攀?/strong>

  • 類(Class)對象(Object)是面向?qū)ο蟮暮诵母拍睢?/p>

  • 類是對一類事物的描述,是抽象的、概念上的定義

  • 對象是實際存在的該類事物的每個個體,因而也稱為實例(instance)。

  • “萬事萬物皆對象” (女朋友)

G8Cpt0.png
  1. 類的語法格式

修飾符 class  類名 {
	屬性聲明;
	方法聲明;
}
說明:修飾符public:類可以被任意訪問類的正文要用{  }括起來
public class Person{
	private int age ;	//聲明私有變量 age 
	public void showAge(int i) { //聲明方法showAge( )
		age = i;
 	}
}

3.對象的創(chuàng)建和使用

  1. 創(chuàng)建對象語法

類名 對象名 = new 類名();
Animal xb=new Animal();
  1. 對象的使用

對象名.對象成員的方式訪問對象成員(包括屬性和方法)
  1. Java中的類和對象

//Animal類
public class Animal {
	public int legs; 
	public void eat(){
		System.out.println(“Eating.”);
	}
	public viod move(){ 
		System.out.println(“Move.”);
}
public class Zoo{
	public static void main(String args[]){
		//創(chuàng)建對象
		Animal xb=new Animal();
		xb.legs=4;//訪問屬性 
		System.out.println(xb.legs);
		xb.eat();//訪問方法
		xb.move();//訪問方法
	}
}
G8P5JP.png

4.類的成員之一: 屬性

  1. 語法格式

修飾符 數(shù)據(jù)類型 屬性名 = 初始化值 ;

  • 說明1: 修飾符

    • 常用的權(quán)限修飾符有:private、缺省、protected、public 其他修飾符:static、final (暫不考慮)

  • 說明2: 數(shù)據(jù)類型

    • 任何基本數(shù)據(jù)類型(如int、Boolean) 或 任何引用數(shù)據(jù)類型。

  • 說明3:屬性名

    • 屬于標識符,符合命名規(guī)則和規(guī)范即可。

public class Person{
	private int age;	//聲明private變量 age
	public String name = “Lila”;	//聲明public變量 name
}
  1. 變量的分類:成員變量與局部變量

G8FSAA.png
class Person{
	//1.屬性
	String name;//姓名--成員變量 
	int age = 1;//年齡
	boolean isMale;//是否是男性 
	
	public void show(String nation){
						//nation:局部變量 
	String color;//color:局部變量
	color = "yellow";
	}
}
 
//測試類
class PersonTest{
public static void main(String[] args){
	Person p = new Person(); 
	p.show(“USA”);
	}
}
  1. 對象屬性的默認初始化賦值

G8FTbQ.png

5.類的成員之二: 方法

  1. 什么是方法(method、函數(shù)):

  • 方法是類或?qū)ο笮袨樘卣鞯某橄?,用來完成某個功能操作。在某些語言中也稱為函數(shù)或過程。

  • 將功能封裝為方法的目的是,可以實現(xiàn)代碼重用,簡化代碼

  • Java里的方法不能獨立存在,所有的方法必須定義在類里。

public class Person{ 
	private int age;
	public int getAge()  { //聲明方法getAge()
		return age;
 	}
	public void setAge(int i) {      //聲明方法setAge
		age = i;	//將參數(shù)i的值賦給類的成員變量age
	}
}
  1. 方法的聲明格式:

修飾符 返回值類型 方法名(參數(shù)類型 形參1, 參數(shù)類型 形參2, ….){
	方法體程序代碼
	return 返回值;
}

修飾符:public,缺省,private, protected等
  1. 方法的分類


無返回值有返回值
無形參void 方法名(){}返回值的類型 方法名(){}
有形參void 方法名(形參列表){}返回值的類型 方法名(形參列表){}
  1. 注意

    • 方法被調(diào)用一次,就會執(zhí)行一次

    • 沒有具體返回值的情況,返回值類型用關(guān)鍵字void表示,那么方法體中可以不必使用return語句。如果使用,僅用來結(jié)束方法。

    • 定義方法時,方法的結(jié)果應(yīng)該返回給調(diào)用者,交由調(diào)用者處理。

    • 方法中只能調(diào)用方法或?qū)傩?,不可以在方法?nèi)部定義方法。

  2. 方法的重載

    • 在同一個類中,允許存在一個以上的同名方法,只要它們的參數(shù)個數(shù)或者參數(shù)類型不同即可。

    • 與返回值類型無關(guān),只看參數(shù)列表,且參數(shù)列表必須不同。(參數(shù)個數(shù)或參數(shù)類型)。調(diào)用時,根據(jù)方法參數(shù)列表的不同來區(qū)別。

//返回三個整數(shù)的和
int add(int x,int y,int z){
	return x+y+z;
}
  1. 方法中的可變個數(shù)形參

  • 聲明格式:方法名(參數(shù)的類型名 ...參數(shù)名)

  • 方法參數(shù)部分指定類型的參數(shù)個數(shù)是可變多個:0個,1個或多個

  • 可變個數(shù)形參的方法與同名的方法之間,彼此構(gòu)成重載

  • 可變參數(shù)方法的使用與方法參數(shù)部分使用數(shù)組是一致的

  • 方法的參數(shù)部分有可變形參,需要放在形參聲明的最后

  • 在一個方法的形參位置,最多只能聲明一個可變個數(shù)形參

//可變參數(shù)
public void test(String a,int... b){
  	for (int i : b) {
       Log.i("test:","b:" + i);
     }
}

6.類的成員之三: 構(gòu)造器

  1. 構(gòu)造器的特征

    • 它具有與類相同的名稱

    • 它不聲明返回值類型。(與聲明為void不同)

    • 不能被static、final、synchronized、abstract、native修飾,不能有return語句返回值

  2. 構(gòu)造器的作用

    • 創(chuàng)建對象;給對象進行初始化

Person p = new Person(“Peter”,15);
  1. 語法格式

修飾符	類名 (參數(shù)列表) {
	初始化語句;
}
//創(chuàng)建Animal類的實例
//調(diào)用構(gòu)造器,將legs初始化為4。
public class Animal { 
	private int legs;
	// 構(gòu)造器
	public Animal() {
		legs = 4;
	}
	public void setLegs(int i) {
		legs = i;
	}
	public int getLegs() { 
		return legs;
}
  1. 注意

    • Java語言中,每個類都至少有一個構(gòu)造器

    • 默認構(gòu)造器的修飾符與所屬類的修飾符一致

    • 一旦顯式定義了構(gòu)造器,則系統(tǒng)不再提供默認構(gòu)造器

    • 一個類可以創(chuàng)建多個重載的構(gòu)造器

    • 父類的構(gòu)造器不可被子類繼承

7.類的成員之四: 代碼塊

  1. 代碼塊的作用

    • 對Java類或?qū)ο筮M行初始化

  2. 代碼塊的分類:

    • 一個類中代碼塊若有修飾符, 則只能被static修飾,稱為靜態(tài)代碼塊(static block),沒有使用static修飾的,為非靜態(tài)代碼塊

  3. 靜態(tài)代碼塊:用static修飾的代碼塊

    • 可以有輸出語句。

    • 可以對類的屬性、類的聲明進行初始化操作。

    • 不可以對非靜態(tài)的屬性初始化。即:不可以調(diào)用非靜態(tài)的屬性和方法。

    • 若有多個靜態(tài)的代碼塊,那么按照從上到下的順序依次執(zhí)行。

    • 靜態(tài)代碼塊的執(zhí)行要先于非靜態(tài)代碼塊。

    • 靜態(tài)代碼塊隨著類的加載而加載,且只執(zhí)行一次。

  4. 非靜態(tài)代碼塊:沒有static修飾的代碼塊

    class Person {
    	public static int total; 
    	static {
    		total = 100;
    		System.out.println("in static block!");
    	}
    }
    
    public class PersonTest {
    	public static void main(String[] args) 
    	{ 
    		System.out.println("total = " + Person.total); 
    		System.out.println("total = " + Person.total);
    	}
    }
    • 可以有輸出語句。

    • 可以對類的屬性、類的聲明進行初始化操作。

    • 除了調(diào)用非靜態(tài)的結(jié)構(gòu)外,還可以調(diào)用靜態(tài)的變量或方法。

    • 若有多個非靜態(tài)的代碼塊,那么按照從上到下的順序依次執(zhí)行。

    • 每次創(chuàng)建對象的時候,都會執(zhí)行一次。且先于構(gòu)造器執(zhí)行。

  5. 程序中成員變量賦值的執(zhí)行順序

G8NfGq.png

8.類的成員之五: 內(nèi)部類

  1. 內(nèi)部類概念

  • 當(dāng)一個事物的內(nèi)部,還有一個部分需要一個完整的結(jié)構(gòu)進行描述,而這個內(nèi)部的完整的結(jié)構(gòu)又只為外部事物提供服務(wù),那么整個內(nèi)部的完整結(jié)構(gòu)最好使用內(nèi)部類。

  • 在Java中,允許一個類的定義位于另一個類的內(nèi)部,前者稱為內(nèi)部類,后者稱為外部類。

  • 內(nèi)部類的名字不能與包含它的外部類類名相同;

  1. 分類

  • 成員內(nèi)部類(static成員內(nèi)部類和非static成員內(nèi)部類)

  • 局部內(nèi)部類(不談修飾符)、匿名內(nèi)部類

  1. 成員內(nèi)部類作為類的成員的角色

  • 和外部類不同,Inner class還可以聲明為privateprotected

  • 可以調(diào)用外部類的結(jié)構(gòu)

  • Inner class 可以聲明為static的,但此時就不能再使用外層類的非static的成員變量;

  1. 成員內(nèi)部類作為類的角色

  • 可以在內(nèi)部定義屬性、方法、構(gòu)造器等結(jié)構(gòu)

  • 可以聲明為abstract類 ,因此可以被其它的內(nèi)部類繼承

  • 可以聲明為final

  • 編譯以后生成OuterClass$InnerClass.class字節(jié)碼文件(也適用于局部內(nèi)部類)

  1. 注意

  • 非static的成員內(nèi)部類中的成員不能聲明為static的,只有在外部類或static的成員內(nèi)部類中才可聲明static成員。

  • 外部類訪問成員內(nèi)部類的成員,需要“內(nèi)部類.成員”或“內(nèi)部類對象.成員”的方式

  • 成員內(nèi)部類可以直接使用外部類的所有成員,包括私有的數(shù)據(jù)

  • 當(dāng)想要在外部類的靜態(tài)成員部分使用內(nèi)部類時,可以考慮內(nèi)部類聲明為靜態(tài)的

class Outer {
	private int s;
	public class Inner { 
		public void mb() {
		s = 100;
		System.out.println("在內(nèi)部類Inner中s=" + s);
	}
}
public void ma() {
	Inner i = new Inner();
	i.mb();
	}
}
public class InnerTest {
	public static void main(String args[]) {
	Outer o = new Outer();
	o.ma();
	}
}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    超薄肉色丝袜脚一区二区| 久久精品国产第一区二区三区| 亚洲国产中文字幕在线观看| 国产美女精品人人做人人爽| 热情的邻居在线中文字幕| 精品国模一区二区三区欧美| 免费观看一级欧美大片| 国产福利在线播放麻豆| 亚洲一区二区三区国产| 黄色美女日本的美女日人| 国产真人无遮挡免费视频一区| 久久综合日韩精品免费观看| 99久久国产精品免费| 久久机热频这里只精品| 国产乱人伦精品一区二区三区四区| 国产精品成人一区二区三区夜夜夜| 中文人妻精品一区二区三区四区 | 97人妻精品一区二区三区男同 | 精品香蕉国产一区二区三区| 国产性情片一区二区三区| av国产熟妇露脸在线观看| 老司机精品视频在线免费| 亚洲中文字幕熟女丝袜久久| 东京热男人的天堂一二三区| 99免费人成看国产片| 欧美日本精品视频在线观看| 亚洲中文字幕在线视频频道| 亚洲综合精品天堂夜夜| 国产美女精品午夜福利视频| 久久福利视频视频一区二区| 欧美不卡午夜中文字幕| 视频在线免费观看你懂的| 国产亚洲中文日韩欧美综合网| 国产成人精品综合久久久看 | 国产成人精品在线一区二区三区| 日本女优一区二区三区免费| 蜜桃av人妻精品一区二区三区| 亚洲中文在线中文字幕91| 国产av一区二区三区麻豆| 99久久精品国产日本| 欧美日韩国产成人高潮|