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关键字的更多相关文章

  1. Java面向对象 Object类 内部类

     Java面向对象 Object类    内部类 知识概要:                 一:Object类                 二:内部类 匿名内部类的写法 1.Object O ...

  2. Java之Object类用法总结

    Object类概述: 1.Object类是所有Java类的根父类. 2.如果在类的声明中未使用extends关键字指明其父类, 则默认父类为java.lang.Object类. Object类主要结构 ...

  3. java.lang.Object类与equals()及toString()的使用

    1.Object类是所有Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 3.Object类中的功能(属性.方法)就具有通用 ...

  4. Java之Object类和常用的API

    Object类和常用的API 学习过程中的笔记,涉及到Objetc中的equals方法和toString方法,日期类Date,日历类Calendar,日期格式化类SimpleDateFormat以及基 ...

  5. Java中Object类hashCode的底层实现

    Java中Object类hashCode的底层实现 openjdk\jdk\src\share\native\java\lang\Object.c 42 static JNINativeMethod ...

  6. Java 之 Object 类

    一.Object 概述  java.lang.Object 类是 Java 语言中的根类,即所有类的父类. 在对象实例化的时候,最终找的父类就是 Object. 如果一个类没有特别指定父类,那么默认则 ...

  7. java之Object类介绍

    1.Object类是所有java类的基类 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类,ex: public class Person{ ~~~~~ } 等价于 p ...

  8. JDK1.8源码(一)——java.lang.Object类

    本系列博客将对JDK1.8版本的相关类从源码层次进行介绍,JDK8的下载地址. 首先介绍JDK中所有类的基类——java.lang.Object. Object 类属于 java.lang 包,此包下 ...

  9. java.lang.Object类

    Object类是java所有对象的基类,包含着java最核心和最基础的类,在编译时会自动导入.具体的类结构图: 1.构造器 public Object(); 大部分情况下,Java中通过形如 new ...

随机推荐

  1. 转:oracle驱动表

    以一个比较两本字典来做例子:       一本字典有索引目录(dict a), 一本没有(dict b)       现在要找出所有a开头的单词的异同       那么比较的时候,你会怎么比较?    ...

  2. java继承的一些问题

    如果在父类中,你声明了一个静态变量. 然后你有两个子类继承了这个父类.我们想看看这两个子类调用继承的父类的类变量a是不是同一个值. 这时候注意,我们在子类的时候不能重写static int a = a ...

  3. 利用 innodb_force_recovery 解决MySQL服务器crash无法重启问题

    背景      MySQL服务器因为磁盘阵列损坏机器crash,重启MySQL服务时 报如下错误: InnoDB: Reading tablespace information from the .i ...

  4. LeetCode OJ:Perfect Squares(完美平方)

    Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 1 ...

  5. SpringCloud教程 | 第十三篇: 断路器聚合监控(Hystrix Turbine)

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://blog.csdn.net/forezp. http://blog.csdn.net/forezp/art ...

  6. UI - 视图控制器跳转另一个视图控制器特效总结

    1. 从一个视图控制器跳转另一个视图控制器的方式是可以进行设置的 CATransition *animation = [[CATransition alloc]init]; animation.dur ...

  7. 【tensorflow:Google】二、Tensorflow环境搭建

    2.1 Tensorflow 主要依赖包 2.1.1 Protocol Buffer 结构化数据序列化的过程,另外的工具:XML, JSON, 区别:二进制(不可读):先定义数据格式,还原的时候将需要 ...

  8. OSPF 配置

    封装在IP层:协议号 89 hello时间是dead时间的1/4 224.0.0.5 .在点到点网络, 比如T1线路,是连接单独的一对路由器的网络, 点到点网络上的有效邻居总是可以形成邻接关系的,在这 ...

  9. 【转载】GetAdaptersInfo函数在64位系统上返回ERROR_NOACCESS的有关问题

    From:http://www.educity.cn/wenda/351190.html GetAdaptersInfo函数在64位系统下返回ERROR_NOACCESS的问题 实际应用中一个程序在长 ...

  10. ansible playbook 使用

    ansible playbook 格式是json  yaml   1. 执行方法 ansible-playbook deply.yml 2. playbook 格式 关键字 hosts 主机ip 主机 ...