object类的基本特性 、 toString方法 、==和equals方法、super关键字

object类的基本特性:

object 类是所有Java类的根基类,也就意味着所有的Java对象那个都拥有object类的属性和方法。如果在类的声明中没有使用extends关键字指明欺父类,则默认继承object。

public class Person
{
.
.
.
}
//等价于:
public class Person extends Object
{
.
.
.
}

toString方法:

object类中定义有public String toString()方法,其返回值是String类型。object类中toString方法源码为:

public String toString()
{
return getClass().getName()+"@"+Integer.toHexString(hashCode()}

根据如上源码得知,默认会返回“类名+@+16进制的hashcode”。在打印输出或者用字符串连接对象时会自动调用该对象的toString()方法

==和equals方法:

***==代表比较双方是否相同,若是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个类。
object类中定义有:public boolean equals(object obj)方法,提供定义“对象内容相等”的逻辑
object的equals方法默认就是比较两个对象的hashcode是同一个对象的引用时返回true苟泽返回false。但是我们可以根据我们自己的要求重写equals方法。

* 测试equals()方法
 */
package cn.wu.oo;

public class TestEquals {
	public static void main(String[] args) {
		Nation p1 = new Nation(123,"夫差");
		Nation p2 = new Nation(123,"勾践");
		System.out.println(p1 == p2);  //false不是同一个对象
		System.out.println(p1.equals(p2));//true ,id相同则认为两个对象内容相同
		String s1 = new String("吴越");
		String s2 = new String("吴越");
		System.err.println(s1 == s2);   //false 两个字符串不是死同一个对象
		System.err.println(s1.equals(s2));//true 两个字符串内容一样
		
	}

}
class Nation{
	int id;
	String name;
	public Nation(int id,String name){
		this.id = id;
		this.name = name;
		
	}
	public boolean equals(Object obj){
		if(obj == null){
			return false;
		}else {
			if(obj instanceof Nation){
				Nation c = (Nation)obj;
				if(c.id == this.id){
					return true;
				}
			}
		}
		return false;
	}
}

JDK提供一些类,如String,Date包装类,重写了object的equals方法,调用这些类的equals方法。
x.equals(y)当x和y所引用的对现实同一对象切属性内容相同时(并不一定相同对象),返回true否则返回false

super关键字:

可以看做是直接父类对象的引用,可以ton过super来访问父类中被子类覆盖的方法或属性。
使用索尔调用普通方法,语句没有位置限制,可以在子类汇总随便使用。
在同一个类中若是构造方法的第一行代码没有显式的嗲用super或者this();那么java默认都会调用super()含义是调用父类的无参构造函数。这里的super()可以省略

* 测试super关键字
 */
package com.wu.testSuper;

public class TestSuper {
	public static void main(String[] args) {
		new ChildClass().f();
	}

}
class FatherClass{
	public int value;
	public void f(){
		value = 100;
		System.out.println("FatherClass.value="+value);
	}
}
class ChildClass extends FatherClass{
	public int value;
	public void f(){
        super.f();  //调用父类的普通方法
        value = 200;
        System.out.println("ChildClass.value ="+value);
        System.out.println(value);
        System.out.println(super.value);  //调用父类的成员变量
	}
}

1、一个类定义时,没有使用extends,则它的父类是:object类
2、object中的toString()方法的默认返回字符串是:类名+@+地址
3、==用于比较两个对象是不是相同的,equals在object中默认实现就是如此
4、equals方法一般用于比较两个对象从:逻辑上的值是不是相等的
5、super关键字的含义是:“可以看做”直接父类的引用,可以通过super来访问父类中被子类覆盖的方法或属性
6、类的构造方法中,如果第一行没有写super(…),系统会自动加super(…)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值