2018-03-14 一、引用的概念,如果一個變數的類型是 類類型,而非基本類型,那麼該變數又叫做引用。 1、引用和指向: 代表創建了一個Hero對象但是也僅僅是創建了一個對象,沒有辦法訪問它為了訪問這個對象,會使用引用來代表這個對象 h這個變數是Hero類型,又叫做引用=的意思指的h這個引用代表右 ...
2018-03-14
一、引用的概念,如果一個變數的類型是 類類型,而非基本類型,那麼該變數又叫做引用。
1、引用和指向:
new Hero();
代表創建了一個Hero對象
但是也僅僅是創建了一個對象,沒有辦法訪問它
為了訪問這個對象,會使用引用來代表這個對象
Hero h = new Hero();
h這個變數是Hero類型,又叫做引用
=的意思指的h這個引用代表右側創建的對象
“代表” 在面向對象里,又叫做“指向”
public class Hero { String name; //姓名 float hp; //血量 float armor; //護甲 int moveSpeed; //移動速度 public static void main(String[] args) { //創建一個對象 new Hero(); //使用一個引用來指向這個對象 Hero h = new Hero(); } }
2、多個引用,一個對象:
引用有多個,但是對象只有一個。
在這個例子里,所有引用都指向了同一個對象。
對象就像 "房產", 引用就像"房產證"
房產證的複印件可以有多張,但是真正的"房產" 只有這麼一處
public class Hero { String name; //姓名 float hp; //血量 float armor; //護甲 int moveSpeed; //移動速度 public static void main(String[] args) { //使用一個引用來指向這個對象 Hero h1 = new Hero(); Hero h2 = h1; //h2指向h1所指向的對象 Hero h3 = h1; Hero h4 = h1; Hero h5 = h4; //h1,h2,h3,h4,h5 五個引用,都指向同一個對象 } }
3、一個引用,多個對象:
第8行,引用garen指向新創建的對象(對象1)第9行,同一個引用garen指向新創建的對象(對象2)
這個時候,對象1,就沒有任何引用指向了
換句話說,就沒有任何手段控制和訪問該對象,那麼該對象就變得沒有意義。 二、在LOL中,武器是物品的一種,也是有名稱和價格的,所以在設計類的時候,可以讓武器繼承物品,從而繼承名稱和價格屬性。 1、物品類Item 有屬性 name,price
public class Item { String name; int price; }
2、武器類: Weapon不繼承Item的寫法
獨立設計 name和price屬性,同時多了一個屬性 damage 攻擊力
public class Weapon{ String name; int price; int damage; //攻擊力 }
3、這一次Weapon繼承Item
雖然Weapon自己沒有設計name和price,但是通過繼承Item類,也具備了name和price屬性
public class Weapon extends Item{ int damage; //攻擊力 public static void main(String[] args) { Weapon infinityEdge = new Weapon(); infinityEdge.damage = 65; //damage屬性在類Weapon中新設計的 infinityEdge.name = "無盡之刃";//name屬性,是從Item中繼承來的,就不需要重覆設計了 infinityEdge.price = 3600; } }
package charactor; public class Hero { public String name; protected float hp; public static void main(String[] args) { Hero garen = new Hero(); garen = new Hero(); } }