2023-4-3——继承

继承

格式:public class 子类名 extends 父类名 { }

继承中成员变量的访问特点:在子类方法中访问一个变量,先去子类局部范围找,再到 子类成员范围找,再到 父类成员范围找 如果都没有就报错(不考虑父亲的父亲…)

super关键字

super和this相似,this在当前类中使用,代表的时当前对象,super代表的是父类存储空间的标识,调用父类对象

super()调用的是父类的无参构造,this()指的是调用本类的无参构造

继承中构造方法的访问特点:子类初始化之前,一定要先完成父类数据的初始化,每一个子类构造方法的第一条语句默认都是:super()

继承中成员方法的访问特点:子类对象访问一个方法,现在 子类成员范围找,再到 父类成员范围找, 如果都没有就报错(不考虑父亲的父亲…)

方法重写

子类与父类的方法名,参数列表相同,子类修饰符大于或等于父类的修饰符,子类返回类型与父类返回类型相同

权限修饰符

 状态修饰符

static(静态)

static 关键字是静态的意思,可以修饰成员方法,成员变量

static 修饰的特点:

被类的所有对象共享,这也是我们判断是否使用静态关键字的条件

可以通过类名调用,当然,也可以通过对象名调用,推荐使用类名调用,在加载类的时候,被static修饰的变量,方法也会被加载

静态方法只能访问静态的成员变量和方法

final(最终态)

final 关键字是最终的意思,可以修饰成员方法,成员变量,类

final 修饰的特点:

修饰方法:表明该方法是最终方法,不能被重写

修饰变量:表明该变量是常量,不能再次被赋值

修饰类:表明该类是最终类,不能被继承

final修饰的是基本类型:基本类型的数据值不能发生改变

final修饰的是引用类型:引用类型的地址值不能发生改变,但地址里面的内容可以该变

案列:

1.需求:定义老师类和学生类,然后写代码测试;最后找到老师类和学生类当中的共性内容,抽取出一个父类,用继承的方式改写代码,并进行测试

Staff类

public class Staff {
    public String sid;
    public String name;
    public int salary;

    public void work() {
        System.out.println("工号为" + sid + ",工资为" + salary + "的" + name + "正在工作");
    }
   

    public Staff() {
    }

    public Staff(String sid, String name, int salary) {
        this.sid = sid;
        this.name = name;
        this.salary = salary;
    }
}

Manager类

public class Manager extends Staff {
    public int bonus;
    public  Manager() {

    }


    public void work() {
        System.out.println("工号为" + sid  + ",工资为"+ salary +",奖金为" + bonus +"的"+ name+ "正在工作");
    }


    public Manager(String sid, String name, int salary,int bonus) {
        super(sid,name,salary);
        this.bonus = bonus;
    }

}

Programmerl类

public class Programmer extends Staff {
    public Programmer() {

    }
    public Programmer(String sid,String name,int salary) {
        super(sid,name,salary);
    }
}

StaffTest类

 

2.需求:请使用继承的思想设计出项目经理类和程序员类,并进行测试

Person类

public class Person {
    public String name;
    public int age;
    
    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

Teacher类

public class Teacher extends Person {
    public Teacher() {

    }

    public Teacher(String name, int age) {
        super(name, age);
    }

    public void teach() {
        System.out.println(age + "岁的" + name + "老师传授知识");
    }
}

Student类

public class Student extends Person {
    public Student() {

    }

    public Student(String name, int age) {
        super(name, age);
    }

    public void study() {
        System.out.println(age + "岁的" + name + "学生学习知识");
    }
}

PersonTest类

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值