继承的出现减少了代码冗余,提高了代码的复用性。
继承的出现,更有利于功能的扩展。
继承的出现让类与类之间产生了关系,提供了多态的前提。
不要仅为了获取其他类中某个功能而去继承
子类继承了父类,就继承了父类的方法和属性。
在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和 方法。
在Java 中,继承的关键字用的是“extends”,即子类不是父类的子集, 而是对父类的“扩展”。
子类不能直接访问父类中私有的(private)的成员变量和方法。
Java只支持单继承和多层继承,不允许多重继承
一个子类只能有一个父类
一个父类可以派生出多个子类
练习:
根据下图实现类。在CylinderTest类中创建Cylinder类的对象,设置圆 柱的底面半径和高,并输出圆柱的体积。
圆类:
- package KindObject;
- //圆
- public class Circle {
- double radius;
-
- public Circle(){
- this.radius=1;
- }
- public Circle(double radius){
- super();
- this.radius=radius;
- }
-
- public double getRadius() {
- return radius;
- }
-
- public void setRadius(double radius) {
- this.radius = radius;
- }
- public double findArea(){
- return 3.14*radius*radius;
- }
- }
继承圆,圆柱类:
- package KindObject;
-
- public class Cylinder extends Circle {
- double length;
- public Cylinder(){
- this.length=1;
- }
- public Cylinder(double radius,double length){
- // super跟this用法相似,指向父类,下一节会讲到
- super(radius);
- this.length=length;
- }
-
- public double getLength() {
- return length;
- }
-
- public void setLength(double length) {
- this.length = length;
- }
- public double findVolume(){
- return 3.14*radius*radius*length;
- }
- }
测试类:
package KindObject; //测试类 public class Test { public static void main(String[] args) { Cylinder ne = new Cylinder(4,5.6); // 圆的面积 System.out.println("圆的面积是:"+ne.findArea()); // 圆柱的面积 System.out.println("圆柱的面积:"+ne.findVolume()); } }