继承

当需要在子类中调用父类的成员变量时,可以使关键字super(变量1,变量2,变量3)

super关键字与this关键字作用类似,都是将屏蔽了的成员变量、成员方法变的可见,可用,也就是说,用来引用屏蔽的成员变量和方法,不过,super是用在子类中,目地只有一个,就是访问直接父类中被屏蔽的内容,进一步提高代码的可重用性和灵活性 ,super关键字不仅可以访问父类的构造方法,还可以访问父类的成员,包括父类的属性和一般方法等

super的语法是:

访问父类构造方法:super(参数)

访问父类的属性、方法:super.父类属性和方法,这里有区分父类属性权限为private的时候,是不可以直接用super.属性的,public才可以

public class Department {
    //定义父类的成员变量/属性
    private int amount=0;//部门人数
    protected String responsibility="待定";//部门职责
    public String manager="无名氏";//部门经理

 amount属性是私有的,所以在子类中不可以用super.amount来调用,如果不可以调成员变量,但又要父类中它的值,那么就调父类中这个属性的公共Get属性方法

manager是公有的,所以可以在子类中super.manager来调用

responsibility是受保护的,在子类中可以用super.responsibility来调用

实例代码:

package com.cn.jicheng;
/*部门类
 * 请使用继承知识,将8个部门类中一样的代码抽取成一个“部门类”
 */
public class Department {
    //定义私有的成员变量
    private int ID;//部门编号
    private String name="待定";//部门名称
    private int amount=0;//部门人数
    protected String responsibility="待定";//部门职责
    public String manager="无名氏";//部门经理
    
    //无参构造方法,如果类中有有参的构造方法,一定要补上一个无参的构造方法
    public Department(){
        
    }
    //定义有参的构造方法,构造方法是为了给成员变量赋初始值
    public Department(String name,String manager,String responsibility){
        this.name=name;
        this.manager=manager;
        this.responsibility=responsibility;
    }
    //获取ID的方法
    public int getID() {
        return ID;
    }
    //设置ID值的方法
    public void setID(int iD) {
        this.ID = iD;
    }
    //获取部门人数的方法
    public int getAmount() {
        return amount;
    }
    //设置部门人数的方法
    public void setAmount(int amount) {
        this.amount = amount;
    }
    //其它的不用了,因为已经用了构造方法赋值
    public void printDetail(){
        System.out.println("部门:"+this.name+"
经理:"+this.manager+"
部门职责:"+this.responsibility+"
***************");
    }
    
    
}
package com.cn.jicheng;
/*
 * 人事部类,继承department类的属性和方法
 */
public class PersonelDept extends Department {
    private int count;//本月计划招聘人数
    
    public PersonelDept(String name,String manager,String responsibility,int count){
        //用super关键字继承父类的成员变量
        super(name,manager,responsibility);
        this.count=count;
    }
    //获取人事部招聘人数
    public int getCount() {
        return count;
    }
    //设置人事部招聘人数
    public void setCount(int count) {
        this.count = count;
    }
    
    
}
package com.cn.jicheng;
/*
 * 研发部继承department父类的成员变量和方法
 */
public class ResearchDept extends Department{
    private String speciality;//研发方向
    public ResearchDept(String name,String manager,String responsibility,String speciality){
        //访问父类的有参构造方法
        super(name,manager,responsibility);
        this.speciality=speciality;
    }
    
    public ResearchDept(String speciality){
        super();//调用父类无参构造方法
        this.speciality=speciality;
    }
    
    public String getSpeciality(){
        return speciality;
    }

    public void setSpeciality(String speciality) {
        this.speciality = speciality;
        
    }
    
    
}
 1 package com.cn.jicheng;
 2 
 3 public class Test {
 4 
 5     /**测试类
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         PersonelDept per=new PersonelDept("人事部","王经理", "负责公司的人才招聘和培训。", 10);
10         per.printDetail();
11     }
12 
13 }
原文地址:https://www.cnblogs.com/sincoolvip/p/5499378.html