java重写object_Java的Object几个重写的方法

1:toString();

只是简单的列出对象的状态(也就是重要的实例变量的当前值)。

package jicheng;

public classAnimal {public static voidmain(String[] args) {

Animal a=newAnimal();

System.out.println(a);

}

}

输出结果:

006bf45c0158ea45762a3f81ae507410.png

重写

packagejicheng;public classAnimal {privateString name;private intage;publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}public intgetAge() {returnage;

}public void setAge(intage) {this.age =age;

}publicAnimal(){}public Animal(String name,intage){this.name=name;this.age=age;

System.out.println("name="+name+","+"age="+age);

}

@OverridepublicString toString() {return "Animal [name=" + name + ", age=" + age + "]";

}

}

packagejicheng;public classAnimatetable {public static voidmain(String[] args) {

Animal a=new Animal("lu",13);

System.out.println(a);

}

}

小知识:this 关键字

1):表示当前的类的成员变量,也叫 类的属性

packagejicheng;public classA{private String name;//定义一个成员变量name

public String getName() {//获得姓名

returnname;

}public void setName(String name) {//设置姓名,定义一个形参name

name = name;//将局部变量的值传递给成员变量

}public static voidmain(String[] args) {

A a=newA();

a.setName("lu");

System.out.println(a.getName());

}

}

69f1274a1324306e699a478b5c61e471.png

由运行结果可以看出,通过name=name并没有正确的将内容赋给属性,为什么呢?因为此时操作的name实际上是方法中的,跟类中的属性完全不沾边。

另外,这个程序代码中,有一个成员变量name,同时在方法中有个形式参数,参数名也是name。然后在方法中将形式参数name的值传递给成员变量name。虽然我们可以看明白这个代码的含义,但是作

为Java编译器它是怎么判断使用哪个变量的呢?到底是将形式参数name的值传递给成员变量name,还是反过来讲成员变量name的值传递给形式参数name呢?

此时this这个关键字就起到作用了,这种情

况下使用this这个关键字代表的就是类中的成员变量,又叫做类的属性。所以此时,为了明确的表示出哪一个是类中的属性,就要加上“this.属性名称”的操作。

2):引用构造函数。

package jicheng;

public class A{

public static String name;//定义一个成员变量name

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public A(){  //定义一个无参的构造函数

this(name);//调用有参的构造函数

System.out.println("testA");

}

public A(String name){//定义一个有参的构造函数

System.out.println("TestA");

}

}

public classTest {public static voidmain(String[] args) {

A a=newA();

}

}

输出

21dea53f155fd47b868c715eddc726f2.png

创建了一个A对象。 然后a引用A()对象。调用 public A()构造函数。但是无参构造函数中有this("TestB");表示调用有参的构造函数。所以也打印出来了。

3):this表示当前对象。

packagejicheng;public classA{publicString getInfo(){

System.out.println("Student类--->"+this);return null;

}public static voidmain(String[] args) {

A a=newA();

a.getInfo();

System.out.println(a.toString());

System.out.println(a);

}

}

0802688920a841d8de13b6f3c2be6455.png

return this  返回当前对象。

publicA getInfo(){

System.out.println("Student类--->"+this);return this;

}

二):equals()

比较两个引用是否完全相同时。用==来比较。 要知道对象本身是否相同时。用equals()方法。

假如两辆车A和B。都是同一批生产的。==来比较的话是两个引用都指向这辆车。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值