スーパークラスObject内のJava
ステップ1:Objectクラスは、すべてのクラスの親であります
クラスを宣言し、デフォルトはオブジェクト継承される
パブリックObjectクラスをインクルードは、ヒーローを拡張します
package charactor;
import property.Item;
public class Hero extends Object {
String name; //姓名
float hp; //血量
float armor; //护甲
int moveSpeed; //移动速度
public void useItem(Item i){
System.out.println("hero use item");
i.effect();
}
public Hero(){
System.out.println("Hero的无参的构造方法 ");
}
public Hero(String name){
System.out.println("Hero的有一个参数的构造方法 ");
this.name = name;
}
public static void main(String[] args) {
new Hero();
}
}
ステップ2:のtoString()
すべてのクラスは、toStringメソッドを持つようにオブジェクト・クラスは、toStringメソッドを提供する
toString()を返し、現在のオブジェクトがあることを意味表現文字列
のSystem.out.println印刷対象によっては、オブジェクトのtoString()戻り値を出力します
package charactor;
public class Hero {
public String name;
protected float hp;
public String toString(){
return name;
}
public static void main(String[] args) {
Hero h = new Hero();
h.name = "盖伦";
System.out.println(h.toString());
//直接打印对象就是打印该对象的toString()返回值
System.out.println(h);
}
}
ステップ3:確定()
オブジェクトは、時間への参照を持っていない、そしてそれは、ガベージコレクションのための条件を満たしている場合
それはゴミをリサイクルした場合、それは確定だ()メソッドが呼び出されます。
確定()メソッドは、開発者が呼び出すためのイニシアチブを取ることはありませんが、仮想マシンのJVMの呼び出しによって。
package charactor;
public class Hero {
public String name;
protected float hp;
public String toString(){
return name;
}
public void finalize(){
System.out.println("这个英雄正在被回收");
}
public static void main(String[] args) {
//只有一引用
Hero h;
for (int i = 0; i < 100000; i++) {
//不断生成新的对象
//每创建一个对象,前一个对象,就没有引用指向了
//那些对象,就满足垃圾回收的条件
//当,垃圾堆积的比较多的时候,就会触发垃圾回收
//一旦这个对象被回收,它的finalize()方法就会被调用
h = new Hero();
}
}
}
ステップ4:等号()
二つのオブジェクトの内容を決定するための等号()は同じです
ときに、同じ馬力時間の2人の英雄、私たちはこれらの同じ2人の英雄と信じている、とし
package charactor;
public class Hero {
public String name;
protected float hp;
public boolean equals(Object o){
if(o instanceof Hero){
Hero h = (Hero) o;
return this.hp == h.hp;
}
return false;
}
public static void main(String[] args) {
Hero h1= new Hero();
h1.hp = 300;
Hero h2= new Hero();
h2.hp = 400;
Hero h3= new Hero();
h3.hp = 300;
System.out.println(h1.equals(h2));
System.out.println(h1.equals(h3));
}
}
ステップ5:==
これはメソッドではなく、二つの同一の物体かどうかを決定するために使用されるオブジェクト
をより正確に言うと、判定のための2つの参照を、それが同じオブジェクトを指し
package charactor;
public class Hero {
public String name;
protected float hp;
public boolean equals(Object o){
if(o instanceof Hero){
Hero h = (Hero) o;
return this.hp == h.hp;
}
return false;
}
public static void main(String[] args) {
Hero h1= new Hero();
h1.hp = 300;
Hero h2= new Hero();
h2.hp = 400;
Hero h3= new Hero();
h3.hp = 300;
System.out.println(h1==h2);
System.out.println(h1==h3);
}
}
ステップ6:のhashCode()
hashCodeメソッドは、オブジェクトのハッシュ値を返します
ステップ7:スレッド同期に関連するメソッド
オブジェクト、関連するスレッドの同期方法を提供する
(ウェイト)を
通知し()
のnotifyAll()
ステップ8:。はgetClass()
getClass()オブジェクトのクラスオブジェクトを返します
運動:オブジェクト
アイテム)(ファイナライズ()とequals()メソッドのtoString書き換え
のtoString()がアイテムを返し+。価格名
ファイナライズ()出力現在のオブジェクトが回収さ
等しい(オブジェクトo)を最初のアイテムタイプかどうかを決定する、およびO 2つを比較します価格は同じ一つの項目であります
答え:
package property;
public class Item extends Object {
String name;
int price;
public String toString() {
return "叫做 " + name + " 的物品,其价格是 " + price;
}
public void finalize() {
System.out.println("回收叫做 " + name + " 的物品");
}
public boolean equals(Object o) {
if (o instanceof Item) {
Item i = (Item) o;
if (i.price == this.price)
return true;
else
return false;
}
return false;
}
}