• 继承


    当需要在子类中调用父类的成员变量时,可以使关键字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 }
  • 相关阅读:
    转发和重定向的区别
    关于Daydream VR的最直白的介绍
    Duplicate Protocol Definition of DTService Is Ignored
    automatically select architectures
    java
    初识反射
    java网络编程
    Map接口
    Set,List
    正则表达式
  • 原文地址:https://www.cnblogs.com/sincoolvip/p/5499378.html
Copyright © 2020-2023  润新知