继承inheritance
继承在Java中的定义:利用继承,人们可以基于已经存在的类来构造一个新的类。继承已存在的类可以复用这个类的方法和域(变量),在这个基础上还可以添加一些新的域和方法,用以满足新的需求。
extends关键字用来定义子类。
示例如下:
public class Rectangles extends Shapes{
/*
*/
}
这样我们就定义了一个新的类Rectangles他继承于Shapes类,Rectangles类成为Shapes类的子类。反过来说Shapes类是Rectangles类的父类(超类)。
在定义子类的时候我们只需要指出他与父类的不同之处,就是父类中拥有的一切属性和方法在子类中可以不用重新声明,即可被子类继承,但是子类中声明的属性和方法却不能被父类所使用。
下面我们用示例来做说明:
编辑工具使用Eclipse
我们来创建三个Java文件,分别为Shapes.java、Rectangles.java和测试文件Demo.java
Shapes.java(父类)示例代码如下:
public class Shapes {
private int width;
private int height;
public int getWidth() {
return width;
}
public void setWidth(int w) {
width=w;
}
public int getHeight() {
return height;
}
public void setHeight(int h) {
height=h;
}
public String getType(String t) {
return t;
}
}
在Shapes.java(父类)文件中我们定义了两个int类型的属性width和height,因为是使用的private私有访问,所以我们分别给他定义了两个get和set方法用于属性的读取和设置。
Rectangles.java(子类)示例代码:
public class Rectangles extends Shapes{
public int getArea(int w,int h) {
return w*h;
}
public int getArea() {
return getWidth()*getHeight();
}
}
在Rectangles.java(子类)中我们创建了两个方法,用来获得面积。这两个方法的方法名看似相同,但是他们的参数列表是不一样的(在同一个类中方法名的区别是用方法名和参数列表组成)。
测试文件Demo.java示例代码如下:
public class Demo {
public static void main(String[] args) {
Rectangles rect=new Rectangles();
rect.setHeight(100);
rect.setWidth(100);
System.out.println(rect.getArea());
System.out.println(rect.getArea(50, 50));
}
}
在测试文件Demo.java中我们创建了Rectangles对象类的实例rect 。我们可以看到,调用setHeight(),setWidth()这两个方法,并没有在Rectangles中进行定义和创建,它是继承了它的父类中的方法。所以我们可以在子类中直接使用。