OKOK自从开始java面向对象课程之后,作业里多了一个要求 overriding toString()
Fine 我身边很多人对此很困惑,这尼玛到底是个啥玩意哪里来的?为什么要重写呢?那么我来解答这个疑惑。
首先,我们创建一个类对吧,其实都是继承了object类,这个类就是所有类的爸爸,那么问题来了,这里super类里面有一个toString() 方法。
这是个什么几把玩意?
不废话,我们看代码。
这边应该大家都看得懂,创建一个简单的car类对吧,有两个public属性,name和price。然后我们在函数体内new一个car1开辟内存了。
赋值名字为bick,价格123124.
然后输出这个变成什么呢?看output框
是不是很疑惑?这是什么东西?
这个就是原始的toString()方法,它输出的是一个内存地址( = 类名字+@+哈希值)
okfine,哈希值是什么? 简单来说,内存地址经过底层算法加密出的值。(16进制)
这明显面向对象是没什么卵用的 那么我们就需要重写这个tostring方法 来输出一个用户看得懂的数据
肯定是从对象角度出发,要让对象看得懂这车什么名字多少钱,对吧。
看代码,我们重写toSting()方法。
ok我们在car类里重写toString()方法。
接下来我们output一下下。
看这就很符合面向对象了,price 123124 name bick
tips,我们拓展一下。toSting() 和 (String)一样吗?
当然不一样。(Sting)是强制转化为字符串类,注意别混淆。