Java之Object类与instanceof关键字

2022-10-20,,,

Object类是所有类的父类:

我们上下代码:

 package com.learn.chap03.sec14;

 public class A { // 上面类A继承了Object类,因此又可这样定义: public class A extends Object{
/**
* object类是所有类的父类
*/
public A(){
super();
}
}

我们可以通过多态,利用重写Object类常用的toString()和equals(Object obj)方法,来完成我们自己的逻辑。

 package com.learn.chap03.sec14;

 public class People {
private String name; /**
* 构造方法
* @param name
*/
public People(String name) {
this.name = name;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} /**
* 重写了Object类的toString()方法
*/
@Override
public String toString() {
return this.getName();
} /**
* 重写了Object类的equals(Object obj)方法
*/
@Override
public boolean equals(Object obj) {
String name = ((People)obj).getName();
return this.name == name;
} public static void main(String[] args) {
People p1 = new People("zhangsan");
People p2 = new People("zhangsan");
People p3 = new People("lisi");
//p1.equals(p2);
System.out.println("p1.equals(p2):"+p1.equals(p2));
System.out.println("p1.equals(p3):"+p1.equals(p3));
System.out.println(p1);
System.out.println(p1.toString());
System.out.println(p2);
System.out.println(p2.toString());
System.out.println(p3);
System.out.println(p3.toString()); }
}

运行结果:

p1.equals(p2):true
p1.equals(p3):false
zhangsan
zhangsan
zhangsan
zhangsan
lisi
lisi

instanceof关键字

作用:判断一个对象是否属于一个类

格式: 对象 instanceof 类      (返回布尔型)

向下转型做判断

我们上下代码:

 package com.learn.chap03.sec15;

 public class Animal {

     public void say(){
System.out.println("我是一个动物!");
}
}
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关键字的相关教程结束。

《Java之Object类与instanceof关键字.doc》

下载本文的Word格式文档,以方便收藏与打印。