Java面向对象之继承

Java 中的继承规则:

1.子类继承父类所有的成员变量和成员方法,但是不能继承父类的构造方法。

2.子类虽然继承了父类的成员变量,但是子类不能直接访问父类的私有变量,可以通过getter/setter()方法进行访问

3.子类对父类构造函数的调用规则:

a.子类的构造方法首先必须调用父类的构造方法。

b.如果没有显示指定,子类的构造方法会默认的调用父类中的无参构造方法,

 1 public class Animal {
 2     public Animal() {
 3         System.out.println("This is a constructor for Animal");
 4     }
 5 }
 6
 7 public class Dog extends Animal {
 8     private String name;
 9
10     public Dog() {
11         System.out.println("This is a constructor for Dog");
12     }
13
14     public Dog(String name) {
15         this.name = name;
16         System.out.println("This is a constructor for "+this.name);
17     }
18 }
19
20 public class Test {
21     public static void main(String args[]) {
22         Dog d1 = new Dog();
23
24         Dog d2 = new Dog("Big Yellow");
25     }
26 }

最后运行结果如图所示:

表明子类虽然没有显示的调用父类构造方法,但是会默认调用父类的无参构造方法。

c.如果父类中没有无参的构造方法,则编译会出错。对以上程序稍作修改:

public class Animal {
    public Animal(String s) {
        System.out.println("This is a constructor for Animal");
    }
}

public class Dog extends Animal {
    private String name;

    public Dog() {
        System.out.println("This is a constructor for Dog");
    }

    public Dog(String name) {
        this.name = name;
        System.out.println("This is a constructor for "+this.name);
    }
}

把父类Animal中的无参构造方法改成有参数的构造方法,则出错。

d.如果父类中有多个构造方法,可以使用super(参数列表)来调用父类构造方法。

例如把以上子类中的构造方法显式的添加为父类有参构造方法,则程序编译通过。

public class Animal {
    public Animal(String s) {
        System.out.println("This is a constructor for Animal");
    }
}

public class Dog extends Animal {
    private String name;

    public Dog() {
        super("aaa");
        System.out.println("This is a constructor for Dog");
    }

    public Dog(String name) {
        super("bbb");
        this.name = name;
        System.out.println("This is a constructor for "+this.name);
    }
}

总之,无论如何,子类都首先必须调用父类的构造方法,切记~~

时间: 2024-10-11 01:09:07

Java面向对象之继承的相关文章

08 Java面向对象之继承

JavaSE 基础之八 08 Java面向对象之继承 ① 对象与对象之间的关系 关联关系:最弱的一种关系(学生类中包含了老师) 继承关系:比较强的一种关系,is-a,你能够用:什么是什么说通 聚合关系:比较强的关系,聚集和组合,什么是什么的一部分 实现关系:子类要去实现父接口 ② 继承的语法实现 class Animal{ } class rabbit extends Animal{ // rabbit称为子类,Animal称为父类 } ③ 继承的特性 子类继承父类,子类可以拥有父类的所有属性(

Java面向对象的继承

继承也是面向对象的又一重要特性,继承是类于类的一种关系,通俗来说狗属于动物类,那么狗这个类就继承了动物类 java中的继承是单继承的,一个类只能继承与一个父类 子类继承父类之后,子类就拥有了父类的所有属性和方法,private的除外,优点就是可以提高代码的复用性,简单的继承实例如下: 1 public class Dog extends Animal { 2 //Dog类继承了Animal类中的所有非私有的属性和方法,可以直接使用了 3 } 使用继承还是挺简单的 方法重写 如果子类对继承父类的方

JavaSE入门学习15:Java面向对象之继承

今天我们来看Java三大面向对象特性中的继承. 一Java继承 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类.继承可以理解为一个对象从另一个 对象获取属性的过程. 如果类A是类B的父类,而类B是类C的父类,我们也称C是A的子类,类C是从类A继承而来的.在Java中,类的继 承是单一继承,也就是说,一个子类只能拥有一个父类. 继承中最常使用的两个关键字是extends和implements.这两个关键字的使用决定了一个对象和另一个对象是否是 IS-A(是一个)关系.通过使

Java 面向对象之继承从哪来,为什么用,怎么用?

首先看一张图片: 现在有两个类,Student和Worker,为了提高复用性.只建立一份代码,让一个类和另一个类产生关系就可以了,这种关系就是:继承. 但我们发现这两个类没有继承关系,但是它们有共性的内容,我们可以找到它们的共享类型,→无论是学生还是工人,都是Person,Person都具备着name和age.即: 在代码中通过关键字 继承(extends),让学生和工人与Person产生关系 class Person { String name; int age; } class Studen

Java面向对象,继承,多态

1,继承 Java 中通过 extends 关键字可以继承一个类,implements可以继承多个接口.继承允许创建等级层次的类. 继承的机制提高了代码的复用性,让类与类之间产生了关系,有了这个关系,才有了多态的特性. 注:Java支持单继承,但是可以多层继承. 子类可以拥有父类的非private的方法和属性,子类可以继承父类的方法,也可以重写父类的方法,还可以对父进行拓展. 增加了类之间的联系,即提高了耦合. 一般格式为: class 父类 { } class 子类 extends 父类 {

Java面向对象练习题继承之点和矩形

按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含: 两个protected属性:矩形的宽width:矩形的高height. 两个构造方法: 1.一个带有两个参数的构造方法,用于将width和height属性初化: 2.一个不带参数的构造方法,将矩形初始化为宽和高都为10. 两个方法: 求矩形面积的方法area() 求矩形周长的方法perimeter() (2)通过继承Rect类编写一个具有确定位置的矩形类PlainRect,其确定位置用 矩形的左上角坐标来标识,包含: 添加两

java面向对象(继承)

一.继承的概念 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为. 在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法 二.类继承的格式 通过 extends 关键字可以申明一个类是从另外一个类继承而来 class 父类 { } class 子类 extends 父类 { } /* * 定义员工类Employee */ c

Java面向对象练习题继承之人种

//People类 package 继承; public class People { private String name; private double height; private double weight; public String getName() { return name; } public void setName(String name) { this.name = name; } public double getHeight() { return height;

Java面向对象练习题继承之物种

21.编写一个Java应用程序,该程序包括3个类:Monkey类.People类和主类 E.要求: (1) Monkey类中有个构造方法:Monkey (String s),并且有个public void speak() 方法,在speak方法中输出“咿咿呀呀......”的信息. (2)People类是Monkey类的子类,在People类中重写方法speak(),在speak方法 中输出“小样的,不错嘛!会说话了!”的信息. (3)在People类中新增方法void think(),在thi