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

定義

方法名稱、返回值類型,參數全部相同

方法名稱相同,參數類型或個數不同

權限

被重寫的方法不能比父類擁有更嚴格的權限

沒有要求

範圍

發生在繼承中

同一個類中

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