zoukankan      html  css  js  c++  java
  • 关键字--super

    关键字super

         在Java类中使用super来调用父类中的指定:

    • super可用于访问父类中定义的属性
    • super可用于调用的父类中定义的成员方法
    • super可用于在子类构造方法中调用父类的构造器

    注意:

    • 尤其当子父类出现同名成员时,可以用super进行区分
    • super的追溯不仅限于直接父类(super不仅可以调用父类,还可调用父类的父类)
    • super和this的用法很相像,this代表本类对象的引用,super代表父类的内存空间的表示
    public class kk extends Kids{
        public void text(){
            super.salary = 1;//salary为kids的父类ManKind中的成员变量
            super.yearsOld = 100;//yearsOld为Kid的成员变量
            super.employeed();//可以用super追溯父类的成员方法
            super.manOrWorman();//可以使用super向上追溯父类的父类的成员方法
        }
    }
    public class Kids extends ManKind {
        public int yearsOld;
    
        public int getYearsOld() {
            return yearsOld;
        }
    
    }
    public class ManKind {
        public int sex;
        public int salary;
    
        public void manOrWorman(){
            
        }
        public void employeed(){
           
        }
    
    }
    

    public class kid extends man {
    
        public void show(){
            super.showInfo();
        }
    
        public static void main(String[] args) {
            kid k = new kid();
            k.show();
        }
    }
    public class man {
        String name = "sa";
        int age =10;
    
        public void showInfo(){
            System.out.println("name"+name+"age"+age);
        }
    }
    

    调用父类的构造器

    • 子类中所有的构造器默认都会访问父类中空参数的构造器
    public class man {
        String name = "sa";
        int age =10;
    
        public man(){//显式无参构造
            System.out.println("mankind");
        }
    
    //    public void showInfo(){
    //        System.out.println("name"+name+"age"+age);
    //    }
    }
    
    public class kid extends man {
    
    //    public void show(){
    //        super.showInfo();
    //    }
    
        public static void main(String[] args) {
            kid k = new kid();//new kid()是在调用kid类的默认无参构造方法,在这个过程中就会使用父类的无参构造
    
        }
    }
    
    //相当于下面
    public class man {
        String name = "sa";
        int age =10;
    
        public man(){//显式无参构造
            System.out.println("mankind");
        }
    
    //    public void showInfo(){
    //        System.out.println("name"+name+"age"+age);
    //    }
    }
    
    public class kid extends man {
          
          public kid(){
              super();
          }
    
    //    public void show(){
    //        super.showInfo();
    //    }
    
        public static void main(String[] args) {
            kid k = new kid();//new kid()是在调用kid类的默认无参构造方法,在这个过程中就会使用父类的无参构造
    
        }
    }
    
    
    • 当父类中灭有空参数的构造器时,子类的构造器必须通过this(参数列表)或者super(参数列表)语句指定调用本类或者父类中相应的构造器,且必须放在构造器的第一行
    • 如果子类构造器中既没有显示调用父类或者本类的构造器,切父类中又没有无参的构造器,则编译出错
  • 相关阅读:
    在MS Sql Server中可以能过以下的方法查询出磁盘空间的使用情况及各数据库数据文件及日志文件的大小及使用利用率:
    sqlserver日志的备份与还原
    C#中String 与Color之间的相互转换
    sql 替换字符串
    Components_Box
    射线检测与碰撞通道设置
    切碎方块
    音乐可视化
    枚举
    UI与Actor(蓝图)的互动
  • 原文地址:https://www.cnblogs.com/zhahu/p/11931391.html
Copyright © 2011-2022 走看看