Java 面向对象 之 Object 类
http://www.verejava.com/?id=16992832835152
/**
知识点: Object 类
注意:
1. Object 是所有类的根类, 也就是说所有类默认都继承Object 只是省略没有写
2. 当 println()输出一个对象的时候 自动调用了 Object的 toString() 方法
3. Object toString() 方法返回的是 : 类名+@+16进制的哈希码hashCode地址
哈希码 代表对象的内存地址,所以如果比较两个对象的引用相等==必须 哈希码相等
4. Object equals(Object obj) 方法比较的也是引用内部是以==实现的
5. String 对象的equals()方法怎么是比较内容了?
6. 如果要equals()比较两个对象的内容相等我们需要复写equals 方法
7. 当Object的子类复写了 toString() 方法, println()输出时调用子类复写的 toString() 方法
8. 如果复写了equals()方法,为了保证对象相等哈希码hashcode必须相等的特性,
我们也要复写hashCode()方法使保持对象的一致性
9. Object 可以接收任意引用数据类型(类,数组,接口)
回顾知识点:
1. 如果一个类定义了带参数的构造方法, 当用不带参数的构造方法调用时,java
虚拟机不会自动生成默认的构造方法,必须得手动显示定义不带参数的默认构造方法。
*/
public class TestObject {
public static void main(String[] args) {
//实例化一个 Student
Object p = new Student("李明");
Student p2 = (Student) p;
Student p3 = new Student("张涛");
Student p4 = new Student("李明");
System.out.println(p);
System.out.println(p == p2);
System.out.println(p3);
System.out.println(p.equals(p3));
System.out.println(p == p4);
System.out.println(p.equals(p4));
System.out.println(p);
System.out.println(p4);
Person p5 = new Student("李明");
System.out.println(p4.equals(p5));
String[] p6 = new String[1];
p6[0] = "李明";
System.out.println(p4.equals(p6));
}
}
interface Person {
//什么人可以说话
public void say();
}
class Student extends Object implements Person {
private String name;
public Student() {
}
public Student(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void say() {
System.out.println("学生会说英语");
}
public boolean equals(Object obj) {
//如果地址都相等, 两个对象肯定相等
if (this == obj) {
return true;
}
//判断是否是 Student 对象实例
if (obj instanceof Student) {
//将obj向下转型成 Student
Student p = (Student) obj;
//如果内容相等返回true
if (this.name.equals(p.getName())) {
return true;
}
}
return false;
}
public int hashCode() {
return this.name.hashCode();
}
public String toString() {
return this.name;
}
}

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Python爬虫环境常用库安装
Python爬虫环境常用库安装 1:urllib urllib.request 这两个库是python自带的库,不需要重新安装,在python中输入如下代码: import urllib import urllib.request response=urllib.request.urlopen("http://www.baidu.com") print(response) 1 2 3 4 返回结果为HTTPResponse的对象:<http.client.HTTPResponse object at 0x000001929C7525F8> 2:正则表达式模块 import re 1 该库为python自带的库,直接运行不报错,证明该库正确安装。 3:request库的安装 安装命令:pip install requests 验证该库是否安装成功,运行如下代码: import requests response=requests.get("http://www.baidu.com") print(response) 1 2 3 4:selenium库的安装 由于如果需要使用...
-
下一篇
Java 面向对象 之 多态
http://www.verejava.com/?id=16992838437553 /** 知识点: 多态 Polymorphism 1. 对象的多态性 分为三种: 方法的重载, 方法的覆盖, 对象的向上向下转型 2. 基本类型的向上向下转型 3. 对象的向上向下转型 : 必须发生在子类和父类之间 注意: 1. 子类对象 可以 转换成父类对象 但是转换后子类属性和方法不可见 当再转换成子类的时候 要强制类型转换 2. 如果直接实例父类然后 转成子类不允许 报异常 ClassCastException 3. 当子类复写了父类的方法, 子类转成父类后 调用的是子类复写的方法。 */ public class Polymorphism { public static void main(String[] args) { //类型的转换 byte a = 1; int b = 100; int c = 200; //小类型 -> 大类型 b = a; System.out.println(b); //大类型 -> 小类型 必须经过强制类型转换 并且转换以后可能丢失精度 a = (...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker容器配置,解决镜像无法拉取问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- MySQL数据库在高并发下的优化方案
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题