要点Java13 继承Inheritance

继承Inheritance

Java中继承允许你重用另外一个类的代码, 你可以从现有的类派生 出新类。这个新类叫做 子类 他继承了父类的所有的成员和方法(私有排外).

你可以像使用普通属性一样使用继承的属性. 你也可以定义与父类相同名字的属性名, 它会隐藏父类的属性(不推荐使用). 你可以定义一个新的属性,父类中没有的. 方法也是如此. 你还可以在子类中写一个同名的方法,覆盖父类的方法. 写一个同名的静态方法,隐藏父类的静态方法 .你可以在子类的构造方法中默认或使用关键字super显示的调用父类的构造方法 . 子类不能继承父类私有的成员或方法。

列子

定义一个叫 Shape (形状)的类, Shape是一个基础类,可以被 rectangle(三角形), square(方形), circle(圆形) 继承.

public class Shape {
    public double area ()
    {
        return 0;     // Since this is just a generic "Shape" we will assume the area as zero.
                    // The actual area of a shape must be overridden by a subclass, as we see below.
                    // You will learn later that there is a way to force a subclass to override a method,
                    // but for this simple example we will ignore that.
    }
}

Circle 继承 Shape ,Circle 是一个Shape形状.

方法area有在基类中定义 ,同时 area 方法由在 circle 类中定义了属于圆行的特殊计算方法.

class Circle extends Shape {                    // "extends" 关键字告诉我们这个类继续了Shape类.

    private static final double PI = Math.PI;   // constant
    private double diameter;                    // This could be any number, representing the diameter of this circle.

    public double area () {
        double radius = diameter / 2.0;
        return PI * radius * radius;
    }

}

使用继承的好处是,你可以写一些的类,然后把他们抽象成一个更一般的类的代码。在下面的例子中,我们有一个方法,它比较两个形状面积:

public class Main {
    public static void main(String[] args) {
        Shape s1 = new Circle (5.0);
        Shape s2 = new Rectangle (5.0, 4.0);
        Shape larger = getLargerShape(s1,s2);

        System.out.println("The area of the larger shape is: "+larger.area());
    }

    public static Shape getLargerShape(Shape s1, Shape s2) {
        if(s1.area() > s2.area())
            return s1;
        else
            return s2;
    }
}

方法 getLargerShape() 不需要使用两个特殊类做参数. 只需要使用父类 Shape 作为他们的参数. 你可以传人 CircleRectangleTriangleTrapezoid, 等等这些类作为参数去比较面积大小,只要他们继承了Shape类 extend Shape

说明:文章结合多家网站资料,以及国外教程翻译总结的相关要点,提供的简单自学材料 for my friends。

要点Java13 继承Inheritance,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。