博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中关键字 this 和super的作用及用法
阅读量:2382 次
发布时间:2019-05-10

本文共 1335 字,大约阅读时间需要 4 分钟。

this关键字

1)在类的内部代表对象本身,你应该看到过this.xxx(),this.xxx这种用法吧,

this就代表这个类的对象,比如

public class A {

   private String name;

   public void setName(String name) {

       //this就代表A的一个对象

       //当你实例一个A时,A a1 = new A();this就是那个a1,只是this在内部用,而a1在外部用

       //A a2 = new A()同理,这时在a2的内部,this就代表a2

       this.name = name;

   }

}


2)this的第二种用法,是用在构造函数里的

当在构造器里要调用自己的其他构造器时,就用this

this必须放在第一行

public class A {

   private String name;

   public A() {

       this("no name");

   }


   public A(String name) {

       this.name = name;

       //other codes

   }

}



super关键字

1)显式的调用父类的方法

当从一个类继承时,子类和父类都有一个同名方法,也就是子类覆盖了父类的方法,可是又想调用父类的方法,那么就要用super,像继承swing的类时就有个好例子

public class MyPanel extends JPanel {

   @Override

   public void paint(Graphics g) {

       super.paint(g);//如果不用super,那么就会调用自己的paint方法

   }

}


2)用在构造器,和this的用法一样,super也可以用在构造器,this是调用自己的其他构造器,那么super当然就是调用父类的构造器了

-------------------------------------------------------


super和this用在构造器的话,前者表示调用父类的够早器,后者表示调用本类的其他构造器,他们两个都必须是写在构造器里的第一行


public class Person {

   private String name;

   private int age;

   public Person() {

       name = "";

       age = 0;

   }


   public Person(String n, int a) {

       name = n;

       age = a;

   }

}


public class Student extends Person {

   private String id;//学号


   public Student(String name, int age) {

       super(name, age);//必须写在第一行,子类无法直接访问父类的私有属性,所以通过调用父类的构造器类初始化属性

   }


   public Student(String id, String name, int age) {

       this(name, age);//因为本类已经有个构造器初始化name和age了,所以交给他来做就行了,也必须写在第一行

       this.id = id;

   }

}

转载地址:http://uouab.baihongyu.com/

你可能感兴趣的文章
打开文件对话框在xp和win7上的实现文件任意多选
查看>>
略谈如何创建一个监控线程
查看>>
苯事两则
查看>>
批处理实现添加java环境变量
查看>>
关于sizeof运算符的一些理解
查看>>
比你更自信,比你更勇敢
查看>>
关于jacob支持BSTR类型的经验总结
查看>>
对Jscript操作注册表接口的一点不解
查看>>
开发一个软件平台的一些心得体会
查看>>
凤凰岭一日游
查看>>
MTL库和C标准库冲突的解决办法
查看>>
一个软件构建系统的设想
查看>>
日志文件支持unicode字符的做法
查看>>
基于服务的并行系统的通讯方式探讨
查看>>
使用regasm注册.net com组件出现不是有效的.net程序集的解决办法
查看>>
VS自定义开发向导中的vsdir文件的简单说明
查看>>
svn回到某个历史版本的做法
查看>>
pugixml读取unicode编码的xml文件的做法
查看>>
VS 2005环境下使用boost ::bind的一个注意事项
查看>>
图形图像显示研究(一)
查看>>