继承(extend)
面向对象的特征之二:继承性
一、继承性的好处
① 减少了代码的冗余,提高代码的复用性
② 便于功能拓展
③ 为之后多态性的使用,提供了前提
二、继承性的格式:class A extends B { }
A:子类、派生类、subclass
B:父类、超类、基类、superclass
2.1 体现:一旦子类A继承父类B以后,子类A中就获取了父类中获取了父类B中声明的所有属性和方法
特别的,父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中的私有结构。只是因为封装性的影响,使得子类不能直接调用父类的结构而已。
2.2 子类继承父类以后,还可以声明自己特有的属性或方法。子类与父类的关系,不同于子集与集合的关系
extends:延展、拓展
三、Java中关于继承性的规定
1.一个类可以被多个子类继承。
2.Java中类的单继承性:一个类只能有一个父类
3.多层继承关系:子父类是相对概念。
4.子类直接继承的类叫直接父类,间接继承的类叫间接父类
5.子类继承父类以后,就获取了直接父类以及间接父类中声明的属性和方法
四、Object类(根父类)
- 如果我们没有显式的声明一个类的父类,则此类继承于java.lang.Object类。
- 所有的java类(除java.lang.Object类之外)都是直接或间接的继承于java.lang.Object类。
- 意味着,所有java类具有java.lang.Object类声明的功能。
求圆柱体积
Circle.java(父类)
package Test03;
public class Circle {
private double radius;
public Circle(){
radius = 1.0;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public double findArea(){
return Math.PI*Math.pow(radius,2);
}
}
Cylinder.java(子类)
import java.util.Scanner;
public class Cylinder extends Circle{
private double length;
public Cylinder() {
length = 1;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double findVolume(){
return findArea()*length;
}
public static void main(String[] args) {
Cylinder cylinder = new Cylinder();
Scanner sc =new Scanner(System.in);
System.out.println("请输入底面半径:");
double radius = sc.nextDouble();
System.out.println("请输入圆柱高度:");
double length = sc.nextDouble();
cylinder.setRadius(radius);
cylinder.setLength(length);
System.out.printf("圆柱的体积为:%.2f",cylinder.findVolume());
}
}