Java面向对象:继承

3继承

3.1继承的实现

1. 基本概念:扩展父类的功能

2. 关键字:extends

3. 格式:

class 子类 extends 父类{ }

 

package com.dzh.extendsdemo;

 

/**

 * 继承:子类Student,父类People,测试类ExtendsDemo01

 *

 * @author Daisy

 *

 */

class People {

private String name;

private int age;

 

public String getName() {

return name;

}

 

public void setName(String name) {

this.name = name;

}

 

public int getAge() {

return age;

}

 

public void setAge(int age) {

this.age = age;

}

 

}

 

class Student extends People {

private int score;

 

public int getScore() {

return score;

}

 

public void setScore(int score) {

this.score = score;

}

 

public void tell() {

System.out.println("姓名:" + getName() + ",年龄:" + getAge() + ",成绩:"

+ getScore());

}

}

 

public class ExtendsDemo01 {

 

public static void main(String[] args) {

Student s = new Student();

s.setName("Sam");

s.setAge(20);

s.setScore(98);

s.tell();

}

 

}

 

3.2继承的限制

1. Java继承只能是单继承,可以多层继承。

class Animal{

//父类

}

 

class Pig extends Animal{

//子类1

}

 

class Dog extends Animal{

//子类2

}

 

class LDog extends Dog{

//多层继承,可以调用Dog类的属性方法,也可以调用Animal类的属性方法

}

2. 子类不能直接访问父类的私有变量,需要通过get/set方法访问。

3.3子类对象的实例化过程

1. 在子类对象实例化之前,先调用父类中的构造方法,之后调用子类构造方法。

class Father {

public Father() {

System.out.print("1父类的构造方法");

}

}

 

class Son extends Father {

public Son() {

System.out.print("2子类的构造方法");

}

}

 

public class ExtendsDemo03 {

 

public static void main(String[] args) {

Son s = new Son();

 

}

 

}

 

 

3.4 Java方法重写和super关键字

3.4.1 方法的重写

1. 在继承中,重写就是子类定义了和父类同名的方法。

2. 定义:方法名相同,返回值类型相同,参数相同。

class A {

public void tell() {

System.out.println("Hello,我是A。");

}

}

 

class B extends A {

public void tell() {

System.out.println("Hello,我是B,我重写了方法tell。");

}

}

 

public class ExtendsDemo04 {

 

public static void main(String[] args) {

B b = new B();

b.tell();

 

}

 

}

 

子类重写了父类的方法,如果不强行调用,父类的方法不会被调用。

在重写方法时,使用super关键字调用父类的方法。

class B extends A {

public void tell() {

super.tell();//强行调用父类的tell方法

System.out.println("Hello,我是B,我重写了方法tell。");

}

}

 

3. 重写限制:被子类重写的方法不能拥有比父类的更加严格的访问权限。即重写方法时,访问修饰符可以不一致,但权限不能比父类大。private < default < public ,通常重写方法时修饰符与其一致不做修改。

4. super关键字:

① 强行调用父类的方法进行执行;

② 不一定在重写中使用,也可以表示那些方法是从父类中继承而来的。

3.4.2重写与重载的区别

名称

重写(Overriding

重载(Overloading

定义

方法名称、返回值类型,参数全部相同

方法名称相同,参数类型或个数不同

权限

被重写的方法不能比父类拥有更严格的权限

没有要求

范围

发生在继承中

同一个类中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章