Java之Object类与instanceof关键字
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类 内部类
Java面向对象 Object类 内部类 知识概要: 一:Object类 二:内部类 匿名内部类的写法 1.Object O ...
- Java之Object类用法总结
Object类概述: 1.Object类是所有Java类的根父类. 2.如果在类的声明中未使用extends关键字指明其父类, 则默认父类为java.lang.Object类. Object类主要结构 ...
- java.lang.Object类与equals()及toString()的使用
1.Object类是所有Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 3.Object类中的功能(属性.方法)就具有通用 ...
- Java之Object类和常用的API
Object类和常用的API 学习过程中的笔记,涉及到Objetc中的equals方法和toString方法,日期类Date,日历类Calendar,日期格式化类SimpleDateFormat以及基 ...
- Java中Object类hashCode的底层实现
Java中Object类hashCode的底层实现 openjdk\jdk\src\share\native\java\lang\Object.c 42 static JNINativeMethod ...
- Java 之 Object 类
一.Object 概述 java.lang.Object 类是 Java 语言中的根类,即所有类的父类. 在对象实例化的时候,最终找的父类就是 Object. 如果一个类没有特别指定父类,那么默认则 ...
- java之Object类介绍
1.Object类是所有java类的基类 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类,ex: public class Person{ ~~~~~ } 等价于 p ...
- JDK1.8源码(一)——java.lang.Object类
本系列博客将对JDK1.8版本的相关类从源码层次进行介绍,JDK8的下载地址. 首先介绍JDK中所有类的基类——java.lang.Object. Object 类属于 java.lang 包,此包下 ...
- java.lang.Object类
Object类是java所有对象的基类,包含着java最核心和最基础的类,在编译时会自动导入.具体的类结构图: 1.构造器 public Object(); 大部分情况下,Java中通过形如 new ...
随机推荐
- 【Hive】任务空间不足错误
hive中跑任务的时候报错 2014-10-09 10:40:27,368 Stage-1 map = 100%, reduce = 32%, Cumulative CPU 2772.48 sec 2 ...
- oracle-12514 or 12520 监听程序无法为请求的服务器类型找到可用的处理程序
(转自:http://blog.csdn.net/wshl1234567/article/details/8003154) 在项目过程中,测试程序的时候数据库经常报错,经过几天的判断和分析,发现一个规 ...
- Agilent RF fundamentals (1)- fundamental units of measure
- 【git】项目更新方法
[放弃修改] 工作区 -- 暂存区 -- 本地仓库 -- 远程仓库 工作区 -- 暂存区: git diff git checkout . / git reset --hard 暂存区 -- 本地 ...
- 【python】利用h5py存储数据
两类容器:group & dataset group类似文件夹,字典. dataset是数据集,类似数组 支持更多的对外透明的存储特征,数据压缩,误差检测,分块传输 group下面可以是gro ...
- Activity has leaked window that was originally added(以解决)
在编写Android程序的时候,遇到一个隐藏性问题.仔细查看LogCat,错误信息如下: 10-31 13:03:34.549: ERROR/WindowManager(444): Activi ...
- Unity3d command line arguments
Options Many of these relate to Unity3d command line arguments Batch Mode - should be left enabled u ...
- Http基础(记忆笔记)
地址解析:http://localhost.com:8080/index.htm 协议名:Http 主机名:localhost.com 端口:8080 对象路径:/index.htm 通过域名解析lo ...
- HDU - 6201:transaction transaction transaction(最长路)
Kelukin is a businessman. Every day, he travels around cities to do some business. On August 17th, i ...
- Adobe Fireworks CS6是一款集网页图片设计、制作与编辑为一体的专业软件
Adobe Fireworks CS6是一款集网页图片设计.制作与编辑为一体的专业软件,它不仅可以轻松制作出各种动感的Gif.动态按钮.动态翻转等网络图片,还可以轻松实现大图切割,让网页加载的图片显示 ...