【Example4】主要介绍继承、重写、final

package com.tingle.j2se.basic;

/**
 * Created on 2020/4/21 12:12
 *
 * 本章主要介绍继承、重写、final
 * @author Tingle
 */
public class Example4 {
    public static void main(String[] args) {
        LiberalArtStudent liberalArtStudent = new LiberalArtStudent("李筱禄", 1, 3, "文科");
        liberalArtStudent.getSchool();
        liberalArtStudent.introduction();
        liberalArtStudent.skill();
        liberalArtStudent.exam();
    }
}

class Student {

    public String name;
    public int id;
    public int classNum;
    public String subjectType;

    //有参构造方法
    public Student(String myName, int myId, int myClassNum, String mySubjectType) {
        name = myName;
        id = myId;
        classNum = myClassNum;
        subjectType = mySubjectType;
    }

    //自定义公共方法1
    public void introduction() {
        System.out.println("大家好!我是来自" + subjectType + classNum + "班" + id + "号" + name + ".");
    }

    /**
     * 自定义公共方法2
     * 把方法锁定,以防任何继承类修改它
     */
    public final void getName(){
        System.out.print("我的名字是:" + this.name);
    }

    /**
     * 自定义方法3
     * 该方法为私有,子类不能继承,虽然为final,但是子类可以定义同名的方法
     */
    private final void getSchool(){
        System.out.println("红领巾中学");
    }
}

/**
 * 文科生类,继承父类学生(文科生属于学生一类)
 * 理解:只能单继承,即只能有一个父类,只能进行一次extends(只能有一个亲爹~~~o(*≧▽≦)ツ)
 * 概念:继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为
 * 理解:继承父类的成员方法和成员变量,就像亲爹有天生金黄色的头发,儿子一生下来也有金黄色的头发
 */
class LiberalStudent extends Student{

    //子类构造方法中,第一行默认是super(),继承父类的成员使用,使用前这些成员必须初始化,他们是父类的成员,所以,必须通过父类进行初始化,在前面说过,构造方法会在类实例化时就进行初始化
    public LiberalStudent(String myName, int myId, int myClassNum, String mySubjectType) {
        super(myName, myId, myClassNum, mySubjectType);
    }

    public void exam(){
        System.out.println("我们高考要考文综");
    }

    public void skill(){
        System.out.println("我书法很厉害");
    }

    public void getSchool(){
        System.out.println("我来自红领巾中学");
    }
}

/**
 * 理科生类,继承父类学生(理科生属于学生一类)
 */
class ScienceStudents extends Student{

    public ScienceStudents(String myName, int myId, int myClassNum, String mySubjectType) {
        super(myName, myId, myClassNum, mySubjectType);
    }

    public void getSchool(){
        System.out.println("我来自美丽的红领巾中学");
    }

    /**
     * 重写父类的方法
     */
    @Override
    public void introduction(){
        System.out.println("Hello!我是来自" + this.subjectType + this.classNum + "班" + this.id + "号" + this.name + ".");
    }

    void test1(){
        this.getSchool();//调用子类方法
        super.getName();//调用父类方法
    }
}

/**
 * 文科艺术生,继承父类文科生(文科艺术生属于学生一类)
 * 能多重继承,本例就是介绍多重继承,文科艺术生继承了文科生,文科生继承了学生
 * 理解:小明爷爷是学生类,小明爸爸是文科生,小明是文科艺术生,小明爸爸继承小明爷爷的黄头发特征,小明也继承了小明爸爸的黄头发特征,其实源头特征在小明爷爷那,这种理解为多重继承
 * 子类拥有父类非 private 的属性、方法
 */
class LiberalArtStudent extends LiberalStudent{

    public LiberalArtStudent(String myName, int myId, int myClassNum, String mySubjectType) {
        super(myName, myId, myClassNum, mySubjectType);
    }

    public void skill(){
        System.out.println("琴棋书画,无所不通");
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值