Java面向对象——this关键字和super关键字的区别

本文详细介绍了Java中的this与super关键字的使用方法及其区别。包括this关键字如何在类的方法中引用当前对象的属性和方法,super关键字如何用于访问父类的属性和方法。此外还解释了this和super在构造方法中的特殊用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、this关键字

(1)调用类中的属性(2)调用类中的方法或构造方法;如下所示调用类中的属性:
案例一:

public class text10{

       public static void main(String[] args){

              Person p1 = new Person();

              p1.setName ("张三");

              p1.setAge (12);

       }

}

class Person{

       private String name;

       private int age;

       //对外提供一个为 name属性设值的方法

       public void setName(String name){           //这里的name也就是上面的张三;

              this.name = name;       //后面的name指的是本类的name,就近原则;

//this.name是当前对象的name,即上面的P1.name,谁调用了这个方法谁就是当前对象

       }

       //对外提供一个为name属性取值的方法:

       public String getName(String name){

              return name;

       }

       public void setAge(int age){

              this.age = age;

       }

       public int getAge(int age){

              return age;

       }

} 

案例二:

/*
this只能使用在实例方法和构造方法中,谁调用实例方法,this就是谁;
this.大部分情况下是可以省略的;
this.不能出现在static静态方法中。。
 */
public class test02 {
    public static void main(String[] args){
        cost c1 = new cost("张三");
        c1.Shopping();
        cost c2 = new cost("里斯");
        c2.Shopping();
    }
}
class cost{
    private String name;//实例变量
    public cost(String name){
        this.name = name;
    }
    public void setName(String x){
        this.name = x;
    }
    public String getName(){
        return name;
    }
//实例方法
    public void Shopping(){
        //c1调用Shopping(),this就是c1;
        //c2调用Shopping(),this就是c2;System.out.println(this.name+"正在购物");
        System.out.println(name+"正在购物");
    }
}

二、super和this关键字

1、super、this是一个关键字,全部小写。 2、super和this对比着学习。

  • this:

this能出现在实例方法和构造方法中。

this的语法是:"this."、"this()"

this不能使用在静态方法中。 ​

this.大部分情况下是可以省略的。

this.什么时候不能省略呢? 在区分局部变量和实例变量的时候不能省略。 ​ 如下所示:
 

public void setName(string name){ ​

        this.name =name;
}

this()只能出现在构造方法第一行,通过当前的构造方法去调用“本类"中其它的构造方法,

                 目的是:代码复用。

  • super:

super能出现在实例方法和构造方法中。

super的语法是:"super."、"super( )"

​ super不能使用在静态方法中。 ​

super,大部分情况下是可以省略的。 ​ super.什么时候不能省略呢????????

  • 父类 和子类中有共同的属性特征或者方法时,如果想在子类中访问”父类的特征“,super.不能省略。。

super()只能出现在构造方法第一行,通过当前的构造方法去调用“父类"中 的构造方法,

目的是:创建子类对象的时候,先初始化父类型特征。

this和super关键字大总结

this关键字

 super关键字:

 

 

`this`关键字`super`关键字面向对象编程语言中(例如Java、C#等),有着特定的用途,主要用于处理类及其实例的相关操作。 ### `this`关键字 **含义**: `this`是一个引用变量,在类的非静态方法或构造器中使用时,它指向当前正在被操作的对象本身。换句话说,它是调用该方法的那个对象的一个引用。 **特殊意义及常见场景**: 1. **区分同名成员变量局部变量**:当方法内的形参名称或者局部变量成员变量冲突时,可以用`this`明确地指出某个属性属于这个对象自身而非其他作用域中的相同名字实体。 示例代码: ```java public class Person { private String name; // 构造函数中利用this指代本类字段name public Person(String name) { this.name = name; } void printName() { System.out.println(this.name); } } ``` 2. **调用另一个构造方法(重载构造函数)**:可以在一个构造器里通过`this()`形式去唤起同类里的别的构造器版本,但注意必须作为第一条语句存在。 ```java public class Example{ int value; Example(){ this(42); // 调用了第二个带参构造器 } Example(int val){ value=val; } } ``` --- ### `super`关键字 **含义**: `super`用于访问直接父类的功能组件,包括其公共、受保护以及包级可见性的字段、方法,并且还能够显式地调用父类构造器初始化继承自它的部分状态信息。 **特殊意义及常用场合**: 1. **访问父类成员**: 如果子类覆盖了某些从超类那里获得的东西比如方法或是变量,则可以借助于`super`来达到目的——即便两者命名一致也不会混淆。 示例代码: ```java class ParentClass { protected String message="Parent"; public void showMsg(){System.out.print(message);} } class ChildClass extends ParentClass { private String message="Child"; @Override public void showMsg(){ super.showMsg(); // 输出"Parent" System.out.print(" "+message);// 续接输出 "Child" } } ``` 2. **调用父类构造器**: 子类可以通过`super(...)`的形式显式指定如何调用其父类提供的某一特定签名下的构造函数完成必要的前置准备工作;同样规则下也只允许出现在首个位置执行链路当中。 ```java class Base{ Base(String txt){/*...*/} } class Derived extends Base{ Derived(){super("Initiating"); /*...*/} ; } ``` 总结来说,`this`强调的是“我自己”,而`super`则侧重表达“我的父亲”。它们都是为了更精确控制程序结构所设计的语言特性工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-今非昔比°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值