JAVA學習第四天 類和物件

2021-09-12 23:46:57 字數 4520 閱讀 8953

列如現在有物品item類

public

class

item

使護甲armor類,繼承item的屬性

public

class

armor

extends

item

}

即對同一方法名,設定不同的引數,如下

public

class

support

extends

hero

public

void

heal

(hero.

..heros)

}public

void

heal

(hero hero,

int hp)

public

static

void

main

(string[

] args)

}

輸出為

琴女進行了一次**

琴女**了蓋倫

琴女**了蓋倫100點血

琴女**了蓋倫

琴女**了提莫

例項化即通過乙個類建立乙個物件,而例項化是通過呼叫構造方法(構造器)實現的。

構造方法名和類名一樣,且沒有返回型別。

如果沒有寫構造方法,則系統會預設提供乙個無引數的構造方法;如果寫了帶引數的構造方法,則不再提供預設的無參構造方法。**如下;給hero類新增帶引數的構造方法並例項化。

public

class

hero

public

hero()

//有無引數的例項化,所以新增這個構造方法

public

static

void

main

(string[

] arg)

}

this相當於我,代表當前物件,可以用來訪問物件屬性、呼叫其他構造方法等;

練習要求,使用this完成hero類的構造方法,並使用this呼叫hero類的不同引數的構造方法;**如下:

//構造方法(含兩個引數,可在下方通過this呼叫)

public

hero

(string name,

float hp)

public

hero

(string name,

float hp,

float armor,

int movespeed)

public

hero()

public

static

void

main

(string[

] arg)

輸出:

新英雄:蓋倫和提莫
傳參分為基本型別傳參和類型別傳參

//movespeed為基本型別變數,該 「=」 表示賦值

int movespeed =

350;

//hero為類型別,該「=」表示指向,引用temmo指向hero

hero temmo =

newhero()

;

類型別傳參

// 攻擊乙個英雄,並讓他掉damage點血

public

void

attack

(hero hero,

int damage)

提出問題:

//構造方法

public

hero

(string name,

float hp)

//復活方法

public

void

revive

(hero h)

public

static

void

main

(string[

] args)

返回值應該為:-17.0

復活的為"新"的temmo,也就是物件h,而h的屬性h.name = temmo。所以temmo物件的temmo.hp = -17.0; h.hp = 383.

package用來規劃存放相似的類,便於管理。

同乙個包下,使用其他的類可以直接使用,但使用其他包下的類需要使用 import 匯入。

修飾符含義

private

私有的protected

受保護的

public

公共的無

package/friendly/default

類之間的關係

自身同包子類

不同包子類

同包類其他類

private

訪問不能繼承

不能繼承

不能訪問

不能訪問

protected

訪問可以繼承

可以繼承

可以訪問

不能訪問

public

訪問可以繼承

可以繼承

可以訪問

可以訪問

無修飾訪問

可以繼承

不能繼承

可以訪問

不能訪問

如下:

package charactor;

import property.weapon;

public

class

hero

}

作用範圍最小原則,能用private就用private,不行就放大一級,用package,再不行就用protected,最後用public。

類屬性:靜態屬性;所有物件都共享的屬性,如血量上限。

物件屬性:非靜態屬性,物件屬性實;跟著物件走,不同物件屬性不同時。

如://靜態屬性

private

int movespeed;

//非靜態屬性,物件屬性

訪問類屬性方式

提出問題:

"blizzard entertainment enterprise"

;答:會變化,變成風暴英雄(手動滑稽);

類屬性只有乙個,修改後也共享。

同類屬性;

類方法:靜態方法;

物件方法:非靜態方法、例項方法。

訪問乙個物件方法,必須建立在有乙個物件的前提的基礎上,但訪問類方法,不需要物件的存在,直接就訪問。

呼叫、使用同類屬性。

物件屬性初始化:

宣告該屬性的時候初始化

構造方法中初始化

初始化塊

類屬性初始化:

宣告該屬性的時候初始化

靜態初始化塊

物件初始化的執行順序:

public

class

hero

public

static string getname

(string pos)

public

static

void

main

(string[

] args)

}

結果:

name 屬性宣告

name 初始化塊

name 構造方法

在乙個類裡,只有乙個例項存在

餓漢式單例模式

public

class

giantdragon

//準備乙個類屬性,指向乙個例項化物件。 因為是類屬性,所以只有乙個

private

static giantdragon instance =

newgiantdragon()

;//public static 方法,提供給呼叫者獲取定義的物件

public

static giantdragon getinstance()

}

懶漢式單例模式
public

class

giantdragon

//準備乙個類屬性,用於指向乙個例項化物件,但是暫時指向null

private

static giantdragon instance;

//public static 方法,返回例項物件

public

static giantdragon getinstance()

//返回 instance指向的物件

return instance;

}}

列舉enum是一種特殊的類,使用列舉可以很方便的定義常量。比如設計乙個列舉型別 季節。方便在switch中使用。

public

enum season

依舊吹大海同學的彩虹屁(手動滑稽)

java學習第四天

public class array2str string str int2str arr system.out.println str str int num 3 string str2 getweek num system.out.println num system.out.println s...

Java學習第四天

1 單目運算子 什麼是單目運算子 目 參與計算的表示式或變數 多目運算子 a b c 單目運算子 變數 自增1 自減1 例如 int i 0 i 先改變i的值 i 1 再使用i i 先使用i的值 然後在改變i的值 i i i i i 1 1 1 1 表示式 0 1 0 1 單目運算 算術運算 比較運...

Java基礎學習第四天

第四天 遇到問題解決思路 1.將複雜問題分解為若干個簡單問題 2.實現,如果有bug,進行debug除錯 3.優化 氣泡排序 比較相鄰的元素。如果第乙個比第二個大,就交換它們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上...