zoukankan      html  css  js  c++  java
  • Java的this和super总结

    内容:

    1、this和super作用

    2、继承关系图

    1、this和super作用

    this和super的作用:

    • this:区分本类中的成员变量和局部变量同名的情况,代指本类
    • super:区分子类中的成员变量和父类中的成员变量,代指父类

    this和super调用普通成员与构造方法:

     1 // 调用普通成员:
     2 this.成员变量       可以访问本类对象的成员变量
     3 super.成员变量     可以访问父类对象的成员变量
     4 
     5 this.成员方法()     可以访问本类对象的成员方法
     6 super.成员方法()    可以访问父类对象的成员方法
     7 
     8 使用this找本类,如果子类没有找父类
     9 使用super找父类,如果父类没有不会去找子类
    10 
    11 // 调用构造方法: 
    12 this(其他参数)      可以访问本类其他的构造方法
    13 super(其他参数)    可以访问父类其他的构造方法
    14 
    15 // 默认子类调用父类构造方法:
    16 子类的每个构造方法中均有默认的super(),调用父类的空参构造。手动调用父类构造会覆盖默认的super();

    this调用构造方法:

     1 public class Person {
     2     private int age;
     3     public Person(){
     4         this(15);//这句话调用 下面带int参数构造
     5     }
     6     public Person(int age){
     7         this.age = age;
     8     }
     9     public int getAge() {
    10         return age;
    11     }
    12     public void setAge(int age) {
    13         this.age = age;
    14     }
    15 }
    16 /*
    17  *  this调用本类中的其他构造方法
    18  *  注意:this()语句形式必须写在构造方法的第一行
    19  */
    20 public class Test {
    21     public static void main(String[] args) {
    22         Person p = new Person();
    23         int a = p.getAge();
    24         System.out.println(a);
    25     }
    26 }

    super调用构造方法:

     1 // 注:子类的每个构造方法中均有默认的super(),调用父类的空参构造
     2 public class Fu {
     3         int a;
     4     public Fu(){
     5         System.out.println("父类的构造方法");
     6     }
     7    public Fu(int a){
     8         this.a = a;
     9     }
    10 
    11 }
    12 
    13 public class Zi extends Fu{
    14     public Zi(){
    15            super(666); 
    16            System.out.println("子类的构造方法");
    17     }
    18 }
    19 public class Test {
    20     public static void main(String[] args) {
    21         new Zi();  // 匿名对象
    22    }
    23 }

    2、继承关系图

     1 //定义父类
     2 public class Person {
     3     private String name;
     4     private int age;
     5 
     6     public Person(){}
     7     public Person(String name,int age) {
     8         this.name = name;
     9         this.age = age;
    10     }
    11     // get/set方法
    12 }
    13 
    14 //定义子类
    15 public class Chinese extends Person{
    16     private String address;
    17     public Chinese(){}
    18     public Chinese(String name,int age,String address) {
    19         super(name,age);
    20         this.address = address;
    21   }
    22     // 对address的get/set
    23 }
    24 
    25 
    26 //定义测试类,使用子类创建对象
    27 public class Test{
    28     Chinese c = new Chinese(“AngelaBaby”,18,”北京海淀区上地软件园”);
    29 }

  • 相关阅读:
    Hdu 5256 系列转换
    SQL在declare声明变量
    煤火车问题
    百度音乐接口-——这可以基于在线音乐播放器来完成
    Android DrawerLayout 抽屉
    NETSH WINSOCK RESET这个命令的意义和效果?
    SSH三作品的框架和流程
    Solr入门指南
    客房收费制度的具体配置
    基本调试命令
  • 原文地址:https://www.cnblogs.com/wyb666/p/10299219.html
Copyright © 2011-2022 走看看