首页 > 代码库 > Java之Object类与instanceof关键字
Java之Object类与instanceof关键字
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 }
我们可以通过多态,利用重写Object类常用的toString()和equals(Object obj)方法,来完成我们自己的逻辑。
1 package com.learn.chap03.sec14; 2 3 public class People { 4 private String name; 5 6 /** 7 * 构造方法 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 * 重写了Object类的toString()方法24 */25 @Override26 public String toString() {27 return this.getName();28 }29 30 /**31 * 重写了Object类的equals(Object obj)方法32 */33 @Override34 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 }
运行结果:
p1.equals(p2):true
p1.equals(p3):false
zhangsan
zhangsan
zhangsan
zhangsan
lisi
lisi
instanceof关键字
作用:判断一个对象是否属于一个类
格式: 对象 instanceof 类 (返回布尔型)
向下转型做判断
我们上下代码:
1 package com.learn.chap03.sec15;2 3 public class Animal {4 5 public void say(){6 System.out.println("我是一个动物!");7 }8 }
package com.learn.chap03.sec15;public class Dog extends Animal{ @Override public void say() { System.out.println("我是一只狗"); } /** * 定义子类方法 */ public void f1(){ System.out.println("狗喜欢啃骨头"); }}
package com.learn.chap03.sec15;public class Cat extends Animal { @Override public void say(){ System.out.println("我是一只猫"); } /** * 定义子类方法 */ public void f2(){ System.out.println("猫喜欢吃鱼"); }}
package com.learn.chap03.sec15;public class Test { /** * 静态方法里面 无法调用非静态方法 下面main方法是静态的,所以doSomeThing方法必须要为静态方法 * @param animal */ public static void doSomeThing(Animal animal){ animal.say(); if(animal instanceof Dog){ // 向下转型做判断,这样下面的代码就会是安全的 ((Dog) animal).f1(); } if(animal instanceof Cat){ // 向下转型做判断,这样下面的代码就会是安全的 ((Cat) animal).f2(); } } public static void main(String[] args) { Animal dog = new Dog(); System.out.println("dog对象是否属于Animal类:"+(dog instanceof Animal)); System.out.println("dog对象是否属于Dog类:"+(dog instanceof Dog)); System.out.println("dog对象是否属于Cat类:"+(dog instanceof Cat)); doSomeThing(new Dog()); doSomeThing(new Cat()); }}
运行结果:
dog对象是否属于Animal类:true
dog对象是否属于Dog类:true
dog对象是否属于Cat类:false
我是一只狗
狗喜欢啃骨头
我是一只猫
猫喜欢吃鱼
Java之Object类与instanceof关键字
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。