1. 程式人生 > >第5章-子類與繼承-子類與父類在同一包中的繼承性

第5章-子類與繼承-子類與父類在同一包中的繼承性

問題:

同一個包中三個類,people是student的父類,student是universtudent的父類,Test中進行呼叫

程式碼:

People.java

public class People {
    double height=170,weight=67.9;
     protected void tellHeightAndWeight(){
        System.err.printf("my weight is %2.2fkg,my height is:%2.2fcm\n",weight,height);//注意輸出的格式
    }
}

Student.java

public class Student extends People{
     int number;
     void tellNum(){
        System.out.println("my number is :"+number);
    }
    int add(int x,int y){
        return x+y; 
    }
    int sub(int x,int y){
        return x-y;
    }
}

Universtudent.java

public class Universtudent extends Student{
    int multi(int x,int y){
        return x*y;
    }
    double div(double x,double y){//返回的型別和傳進來的引數及運算結果要相符
        return x/y;
    }
}

Test.java

public class Test {
    public static void main(String[]args){
        int x=12,y=18;
        Student zhang=new Student();
        zhang.weight=73.8;
        zhang.height=177;
        zhang.number=100101;
        zhang.tellHeightAndWeight();
        zhang.tellNum();
        System.out.println("zhang can do add and sub !!");
        int result=zhang.add(x,y);
        System.out.printf("%d+%d=%d\n",x,y,result);// /t換行
        result=zhang.sub(x,y);
        System.out.printf("%d-%d=%d\n",x,y,result);
        Universtudent geng=new Universtudent();
        geng.number=6609;
        geng.tellHeightAndWeight();
        geng.tellNum();
        System.out.println("geng can do add .sub.multi.div!");
        result=geng.add(x,y);
        System.out.printf("%d+%d=%d\n",x,y,result);
        result=geng.sub(x,y);
        System.out.printf("%d-%d=%d\n",x,y,result);
        result=geng.multi(x,y);
        System.out.printf("%d*%d=%d\n",x,y,result);
        double re=geng.div(x,y);//需要重新設一個變數,因為result的型別是整形
        System.out.printf("%d/%d=%f\n",x,y,re);
        
    }
}

執行結果:

總結:子類繼承父類的成員變數作為自己的一個成員變數,就好像他們在子類中直接聲明瞭一樣,可以被子類中自己定義的任何例項方法操作。

子類繼承父類除private訪問許可權以外的其他成員變數作為子類的成員變數。