欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java_面向对象中的this和super用法

程序员文章站 2022-04-09 09:43:39
this: 1、使用在类中,可以用来修饰属性、方法、构造器 2、表示当前对象或者是当前正在创建的对象 3、当形参与成员变量重名时,如果在方法内部需要使用成员变量,必须添加 this 来表明该变量时类成员 4、在任意方法内,如果使用当前类的成员变量或者成员方法可以在其前面添加 this ,增强程序的阅 ......

this:

1、使用在类中,可以用来修饰属性、方法、构造器

2、表示当前对象或者是当前正在创建的对象

3、当形参与成员变量重名时,如果在方法内部需要使用成员变量,必须添加 this 来表明该变量时类成员

public void setname(string name) {
        this.name = name;
    }

 

4、在任意方法内,如果使用当前类的成员变量或者成员方法可以在其前面添加 this ,增强程序的阅读性

5、在构造器中使用 “ this(形参列表) ” 显示的调用本类中重载的其他的构造器

  >5.1 要求 “ this(形参列表) ” 要声明在构造器的首行!

//构造方法
    public person(){}
    public person(string name){
        this();
        this.name = name;
    }
    public person(string name,int age){
        this(name);
        this.age = age;
    }

 

  >5.2 类中若存在 n 个构造器,那么最多有 n-1 构造器中可以使用 “ this(形参列表) ”

package com.basis;

public class person {

    private string name;
    private int age;
    
    //构造方法
    public person(){}
    public person(string name){
        this();
        this.name = name;
    }
    public person(string name,int age){
        this(name);
        this.age = age;
    }
    
    //setter 和 getter 方法
    public string getname() {
        return name;
    }
    public void setname(string name) {
        this.name = name;
    }
    public int getage() {
        return age;
    }
    public void setage(int age) {
        this.age = age;
    }
    public void show(){
        system.out.println("name:"+this.getname()+"  age:"+this.getage());
    }
}

 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

 

super(继承性):

1、super, 相较于关键字 this , 可以修饰属性、方法、构造器

2、super 修饰属性、方法:在子类的方法、构造器中,通过 super.属性 或者 super.方法 的形式,显式的调用父类的指定属性或者方法。尤其是,当子类与父类有同名的属性、或者方法时,调用父类中的结构,一定要用 “super.”

3、通过 “super(形参列表)” ,显式的在子类的构造器中,调用父类指定的构造器

  >3.1 要求 “ super(形参列表) ” 要声明在构造器的首行!

  >3.2 任何一个类(除 object 类)的构造器的首行,要么显式的调用本类中重载的其他构造器 “this(形参列表)” 或显式的调用父类中指定的构造器 “super(形参列表)” ,要么默认的调用父类空参的构造器 “super()”

  >3.3 建议在设计类时,提供一个空参的构造器!

class student extends person{
    private int id;

    public student() {
        super();
    }

    public student(string name, int age,int id) {
        super(name, age);
        this.id = id;
    }

    public student(string name,int id) {
        super(name);
        this.id = id;
    }
    
}