当前位置: 首页 > 编程笔记 >

举例讲解Java编程中this关键字与super关键字的用法

龚博涛
2023-03-14
本文向大家介绍举例讲解Java编程中this关键字与super关键字的用法,包括了举例讲解Java编程中this关键字与super关键字的用法的使用技巧和注意事项,需要的朋友参考一下

this
总要有个事物来代表类的当前对象,就像C++中的this指针一样,Java中的this关键字就是代表当前对象的引用。
它有三个主要的作用:
1、在构造方法中调用其他构造方法
      比如有一个Student类,有三个构造函数,某一个构造函数中调用另外构造函数,就要用到this(),而直接使用Student()是不可以的。
2、返回当前对象的引用。
3、区分成员变量名和参数名。
看下面的例子:

public class Student 
{ 
  private String name; 
  private int age; 
  private String college; 
  public Student() 
  { 
    age = 20; 
  } 
  public Student(String name) 
  { 
    this();//can not be call Student,only use this() method. 
    this.name = name; 
    System.out.println("this student name is "+name); 
  } 
  public Student(String name,String college) 
  { 
    this(name);//C++中可以直接用Student(name)调用其他构造函数 
    this.college = college; 
    System.out.println("this student name is "+name+" college is "+college);     
  } 
 
  public Student upgrade() 
  { 
    age++; 
    return this; 
  } 
 
  public void print() 
  { 
    System.out.println("name is: "+name 
        +" age is: "+age 
        +" college is: "+college); 
  } 
 
  public static void main(String[] args) 
  { 
    Student student1 = new Student("linc"); 
    Student student2 = new Student("linc","shenyang college"); 
    student2.upgrade().print(); 
  } 
} 

迷失在茫茫的对象海洋时,不要忘了用this来找到自我。

super
super是this的父辈。从面相对象的角度说,这两个概念是很好理解的。
子类从父类继承过来,父类的protected及以上的属性和方法在子类中是天生就具有的。那么,为什么还要有super这个关键字?
第一、看父类的构造
子类构造时要先调用父类的默认构造函数的,这与C++的构造属性一致。当父类有多个构造函数时,你需要指定调用哪个。这是就需要使用super(arg1,arg2...)。
需要注意的是,在子类的构造函数中调用基类的构造函数时,必须要把super写作最前面,否则报错。
第二,在子类覆盖父类的一些方法中再调用父类的此方法。大家都知道,在子类中覆盖父类的一些方法是面向对象中多态的一种方式,而因为其他种种原因,需要在此方法中调用父类的此方法,用以区分,此时需要使用super来完成。

public class ClassLeader extends Student 
{ 
  private String duty; 
  public ClassLeader() 
  { 
    duty = "class monitor"; 
  } 
  public ClassLeader(String duty,String name,String college) 
  { 
    super(name,college); 
    this.duty = duty; 
  } 
 
  public void print() 
  { 
    super.print(); 
    System.out.println("duty is " + duty); 
  } 
   
  public static void main(String[] args)  
  {  
    ClassLeader leader = new ClassLeader("life","linc","shenyang"); 
  leader.print(); 
  }  
   
} 

将两个类文件放在同一个目录,编译并运行:

D:\workspace\Java\project261\super>javac -d . *java 
 
D:\workspace\Java\project261\super>java ClassLeader 

运行结果:

this student name is linc 
this student name is linc college is shenyang 
name is: linc age is: 20 college is: shenyang 
duty is life 

看看在其他语言中是怎样来处理的:
C#中提供了base关键字来完成super相似的功能,C++直接用基类的名字来调用。

 类似资料:
  • 本文向大家介绍举例讲解Java中final关键字的用法,包括了举例讲解Java中final关键字的用法的使用技巧和注意事项,需要的朋友参考一下 1. final variable final variable 就是一个常量,一旦被初始化就不可以被改变。 输出: (1)Blank final variable 在声明时未初始化的 final variable 被称作 blank final vari

  • 主要内容:super调用父类构造方法,super访问父类成员,super和this的区别由于子类不能继承父类的构造方法,因此,如果要调用父类的构造方法,可以使用 super 关键字。super 可以用来访问父类的构造方法、普通方法和属性。 super 关键字的功能: 在子类的构造方法中显式的调用父类构造方法 访问父类的成员方法和变量。 super调用父类构造方法 super 关键字可以在子类的构造方法中显式地调用父类的构造方法,基本格式如下: 其中,parameter-list 指定

  • 我对java中的super关键字有一个问题。请遵循以下示例: 我的观点是,当我在子类中使用Super()时,java如何知道在我的子类中调用哪个构造函数?因为在我的超类中,我有两个没有参数的构造函数;公共双getRadius()和公共双getArea()

  • 主要内容:this.属性名,this.方法名,this( )访问构造方法this 关键字是 Java 常用的关键字,可用于任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用。 下面我们根据示例分别讲解 this 关键字的作用。 this.属性名 大部分时候,普通方法访问其他方法、成员变量时无须使用 this 前缀,但如果方法里有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用 this 前缀

  • 本文向大家介绍super 关键字的理解相关面试题,主要包含被问及super 关键字的理解时的应答技巧和注意事项,需要的朋友参考一下 super 关键字 super关键字用于从子类访问父类的变量和方法。 例如: 在上面的例子中,Sub 类访问父类成员变量 number 并调用其其父类 Super 的 方法。 使用 this 和 super 要注意的问题: 在构造器中使用 调用父类中的其他构造方法时,

  • 本文向大家介绍java 关键字super详解及用法,包括了java 关键字super详解及用法的使用技巧和注意事项,需要的朋友参考一下 java 关键字super详解 一、super关键字     在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象。怎么去引用里面的父类对象呢?使用

  • 本文向大家介绍this关键字详解,包括了this关键字详解的使用技巧和注意事项,需要的朋友参考一下 Java提供了一个this关键字,this关键字总是指向调用该方法的对象。根据this出现的位置的不同,this作为对象的默认引用有两种情形。 1)构造器中引用该构造器正在初始化的对象。 2)在方法中引用调用该方法的对象。 this关键字最大的作用就是让类中一个方法,访问该类里的另一个方法或者实例变

  • 涵义 this关键字是一个非常重要的语法点。毫不夸张地说,不理解它的含义,大部分开发任务都无法完成。 前一章已经提到,this可以用在构造函数之中,表示实例对象。除此之外,this还可以用在别的场合。但不管是什么场合,this都有一个共同点:它总是返回一个对象。 简单说,this就是属性或方法“当前”所在的对象。 this.property 上面代码中,this就代表property属性当前所在