Java之Object类与instanceof关键字
生活随笔
收集整理的這篇文章主要介紹了
Java之Object类与instanceof关键字
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Object類是所有類的父類:
我們上下代碼:
1 package com.learn.chap03.sec14; 2 3 public class A { // 上面類A繼承了Object類,因此又可這樣定義: public class A extends Object{ 4 /** 5 * object類是所有類的父類 6 */ 7 public A(){ 8 super(); 9 } 10 }?
我們可以通過(guò)多態(tài),利用重寫(xiě)Object類常用的toString()和equals(Object obj)方法,來(lái)完成我們自己的邏輯。
1 package com.learn.chap03.sec14; 2 3 public class People { 4 private String name; 5 6 /** 7 * 構(gòu)造方法 8 * @param name 9 */ 10 public People(String name) { 11 this.name = name; 12 } 13 14 public String getName() { 15 return name; 16 } 17 18 public void setName(String name) { 19 this.name = name; 20 } 21 22 /** 23 * 重寫(xiě)了Object類的toString()方法 24 */ 25 @Override 26 public String toString() { 27 return this.getName(); 28 } 29 30 /** 31 * 重寫(xiě)了Object類的equals(Object obj)方法 32 */ 33 @Override 34 public boolean equals(Object obj) { 35 String name = ((People)obj).getName(); 36 return this.name == name; 37 } 38 39 public static void main(String[] args) { 40 People p1 = new People("zhangsan"); 41 People p2 = new People("zhangsan"); 42 People p3 = new People("lisi"); 43 //p1.equals(p2); 44 System.out.println("p1.equals(p2):"+p1.equals(p2)); 45 System.out.println("p1.equals(p3):"+p1.equals(p3)); 46 System.out.println(p1); 47 System.out.println(p1.toString()); 48 System.out.println(p2); 49 System.out.println(p2.toString()); 50 System.out.println(p3); 51 System.out.println(p3.toString()); 52 53 } 54 }運(yùn)行結(jié)果:
p1.equals(p2):true
p1.equals(p3):false
zhangsan
zhangsan
zhangsan
zhangsan
lisi
lisi
?
instanceof關(guān)鍵字
作用:判斷一個(gè)對(duì)象是否屬于一個(gè)類
格式: 對(duì)象 instanceof 類 ? ? ?(返回布爾型)
向下轉(zhuǎn)型做判斷
?
我們上下代碼:
1 package com.learn.chap03.sec15; 2 3 public class Animal { 4 5 public void say(){ 6 System.out.println("我是一個(gè)動(dòng)物!"); 7 } 8 } package com.learn.chap03.sec15;public class Dog extends Animal{@Overridepublic void say() {System.out.println("我是一只狗");}/*** 定義子類方法*/public void f1(){System.out.println("狗喜歡啃骨頭");} } package com.learn.chap03.sec15;public class Cat extends Animal {@Overridepublic void say(){System.out.println("我是一只貓");}/*** 定義子類方法*/public void f2(){System.out.println("貓喜歡吃魚(yú)");} }?
package com.learn.chap03.sec15;public class Test {/*** 靜態(tài)方法里面 無(wú)法調(diào)用非靜態(tài)方法 下面main方法是靜態(tài)的,所以doSomeThing方法必須要為靜態(tài)方法* @param animal*/public static void doSomeThing(Animal animal){animal.say();if(animal instanceof Dog){ // 向下轉(zhuǎn)型做判斷,這樣下面的代碼就會(huì)是安全的 ((Dog) animal).f1();}if(animal instanceof Cat){ // 向下轉(zhuǎn)型做判斷,這樣下面的代碼就會(huì)是安全的 ((Cat) animal).f2();}}public static void main(String[] args) {Animal dog = new Dog();System.out.println("dog對(duì)象是否屬于Animal類:"+(dog instanceof Animal));System.out.println("dog對(duì)象是否屬于Dog類:"+(dog instanceof Dog));System.out.println("dog對(duì)象是否屬于Cat類:"+(dog instanceof Cat));doSomeThing(new Dog());doSomeThing(new Cat());} }?
運(yùn)行結(jié)果:
dog對(duì)象是否屬于Animal類:true
dog對(duì)象是否屬于Dog類:true
dog對(duì)象是否屬于Cat類:false
我是一只狗
狗喜歡啃骨頭
我是一只貓
貓喜歡吃魚(yú)
?
轉(zhuǎn)載于:https://www.cnblogs.com/eaglezb/p/5964512.html
總結(jié)
以上是生活随笔為你收集整理的Java之Object类与instanceof关键字的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: perl 分析mysql binlog
- 下一篇: CSS3 里添加自定义字体