Java自学-继承与接口 Object类
2019-09-17 10:53:20来源:博客园 阅读 ()
Java自学-继承与接口 Object类
Java中的超类 Object
步骤 1 : Object类是所有类的父类
声明一个类的时候,默认是继承了Object
public class Hero extends Object
package charactor;
import property.Item;
public class Hero extends Object {
String name; //姓名
float hp; //血量
float armor; //护甲
int moveSpeed; //移动速度
public void useItem(Item i){
System.out.println("hero use item");
i.effect();
}
public Hero(){
System.out.println("Hero的无参的构造方法 ");
}
public Hero(String name){
System.out.println("Hero的有一个参数的构造方法 ");
this.name = name;
}
public static void main(String[] args) {
new Hero();
}
}
步骤 2 : toString()
Object类提供一个toString方法,所以所有的类都有toString方法
toString()的意思是返回当前对象的字符串表达
通过 System.out.println 打印对象就是打印该对象的toString()返回值
package charactor;
public class Hero {
public String name;
protected float hp;
public String toString(){
return name;
}
public static void main(String[] args) {
Hero h = new Hero();
h.name = "盖伦";
System.out.println(h.toString());
//直接打印对象就是打印该对象的toString()返回值
System.out.println(h);
}
}
步骤 3 : finalize()
当一个对象没有任何引用指向的时候,它就满足垃圾回收的条件
当它被垃圾回收的时候,它的finalize() 方法就会被调用。
finalize() 不是开发人员主动调用的方法,而是由虚拟机JVM调用的。
package charactor;
public class Hero {
public String name;
protected float hp;
public String toString(){
return name;
}
public void finalize(){
System.out.println("这个英雄正在被回收");
}
public static void main(String[] args) {
//只有一引用
Hero h;
for (int i = 0; i < 100000; i++) {
//不断生成新的对象
//每创建一个对象,前一个对象,就没有引用指向了
//那些对象,就满足垃圾回收的条件
//当,垃圾堆积的比较多的时候,就会触发垃圾回收
//一旦这个对象被回收,它的finalize()方法就会被调用
h = new Hero();
}
}
}
步骤 4 : equals()
equals() 用于判断两个对象的内容是否相同
假设,当两个英雄的hp相同的时候,我们就认为这两个英雄相同
package charactor;
public class Hero {
public String name;
protected float hp;
public boolean equals(Object o){
if(o instanceof Hero){
Hero h = (Hero) o;
return this.hp == h.hp;
}
return false;
}
public static void main(String[] args) {
Hero h1= new Hero();
h1.hp = 300;
Hero h2= new Hero();
h2.hp = 400;
Hero h3= new Hero();
h3.hp = 300;
System.out.println(h1.equals(h2));
System.out.println(h1.equals(h3));
}
}
步骤 5 : ==
这不是Object的方法,但是用于判断两个对象是否相同
更准确的讲,用于判断两个引用,是否指向了同一个对象
package charactor;
public class Hero {
public String name;
protected float hp;
public boolean equals(Object o){
if(o instanceof Hero){
Hero h = (Hero) o;
return this.hp == h.hp;
}
return false;
}
public static void main(String[] args) {
Hero h1= new Hero();
h1.hp = 300;
Hero h2= new Hero();
h2.hp = 400;
Hero h3= new Hero();
h3.hp = 300;
System.out.println(h1==h2);
System.out.println(h1==h3);
}
}
步骤 6 : hashCode()
hashCode方法返回一个对象的哈希值
步骤 7 : 线程同步相关方法
Object还提供线程同步相关方法
wait()
notify()
notifyAll()
步骤 8 : getClass()
getClass()会返回一个对象的类对象
练习: Object
重写Item的 toString(), finalize()和equals()方法
toString() 返回Item的name + price
finalize() 输出当前对象正在被回收
equals(Object o) 首先判断o是否是Item类型,然后比较两个Item的price是否相同
答案:
package property;
public class Item extends Object {
String name;
int price;
public String toString() {
return "叫做 " + name + " 的物品,其价格是 " + price;
}
public void finalize() {
System.out.println("回收叫做 " + name + " 的物品");
}
public boolean equals(Object o) {
if (o instanceof Item) {
Item i = (Item) o;
if (i.price == this.price)
return true;
else
return false;
}
return false;
}
}
原文链接:https://www.cnblogs.com/jeddzd/p/11532236.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash