小编带领大家介绍Java中继承的基本概念,在Java中,所有类都有一个父类Object,我们先来看这个类,然后主要通过图形处理中的一些简单例子来介绍继承的基本概念。
根父类Object
在Java中,即使没有声明父类,也有一个隐含的父类,这个父类叫Object。Object没有定义属性,但定义了一些方法。
类Object中的方法
本节我们会介绍toString()方法,其他方法我们会在后续章节中逐步介绍。toString()方法目的是返回一个对象的文本描述,这个方法可以直接被所有类使用。
比如,对于我们上一章介绍的Point类,可以这样使用toString方法:
Point p = new Point(2,3);
System.out.println(p.toString());
输出类似这样:
Point@76f9aa66
这是什么意思呢?@之前是类名,@之后的内容是什么呢?我们来看下toString()方法的代码:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
getClass().getName()返回当前对象的类名,hashCode()返回一个对象的哈希值,哈希我们会在后续章节进一步介绍,这里可以理解为是一个整数,这个整数默认情况下,通常是对象的内存地址值,Integer.toHexString(hashCode())返回这个哈希值的十六进制表示。
为什么要这么写呢?写类名是可以理解的,表示对象的类型,而写哈希值则是不得已的,因为Object类并不知道具体对象的属性,不知道怎么用文本描述,但又需要区分不同对象,只能是写一个哈希值。
但子类是知道自己的属性的,子类可以重写父类的方法,以反映自己的不同实现。所谓重写,就是定义和父类一样的方法,并重新实现方法重写
上一章,我们介绍了一些图形处理类,其中有Point类,这次我们重写其toString()方法。
Point类:重写toString()方法
public class Point {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public double distance(Point point){
return Math.sqrt(Math.pow(this.x-point.getX(),2)
+Math.pow(this.y-point.getY(), 2));
}
public int getX() {
return x;
}
public int getY() {
return y;
}
@Override
public String toString() {
return "("+x+","+y+")";
}
}
toString()方法前面有一个@Override,这表示toString()这个方法是重写的父类的方法,重写后的方法返回Point的x和y坐标的值。重写后,将调用子类的实现。比如,如下代码的输出就变成了(2,3)。
Point p = new Point(2,3);
System.out.println(p.toString());
在这里小编给大家分享一个Java入门的视频教程,适合零基础想要入门的小伙伴,有经验的程序员也可以加以巩固。
为初学者而著!
适合零基础的小伙伴们学习Java。
感兴趣的小伙伴可以点视频链接和小编一起学习,共同进步!