开发者

Java中super与this关键字的用途及区别详解

目录
  • super关键字
    • 主要用途:
  • this关键字
    • 主要用途:
  • super与this的区别
    • 代码示例
      • 总结

        super关键字

        super是Java中的一个引用变量,用于引用直接父类对象。

        主要用途:

        • 访问父类的成员变量:当子类和父类有同名变量时

          super.variableName;
        • 调用父类的方法:特别是当子类重写了父类方法时

          super.methodName();
        • 调用父类的构造器:必须在子类构造器的第一行

          su编程客栈per();
          // 或
          super(parameters);

        this关键字

        this是Java中的一个引用变量,用于引用当前对象。

        主要用途:

        • 引用当前对象的成员变量:解决局部变量与成员变量同名的问题

          this.variableName = variableName;
        • 编程客栈用当前类的方法:明确调用当前类的方法

          this.methodName();
        • 调用当前类的构造器:必须在构造器的第一行

          this();
          // 或
          this(parameters);
        • 作为参数传递:将当前对象作为参数传递

          method(this);

        super与this的区别

        特性superthis
        引用对象父类对象当前对象
        使用场景主要用于继承关系中可用于任何类中
        调用构造器必须位于子类构造器第一行必须位于构造器第一行
        访问权限只能访问父类可见的成员可以访问当前类所有成员
        链式调用不能链式调用(super.super非法)可以链式调用(this.this非法)
        静态上下文不能在静态方法/块中使用不能在静态方法/块中使用

        代码示例

        class Parent {
            String name = "Parent";
            
            void display() {
                System.out.println("Parent's display");
            }
        }
        
        class Child extends Parent {
            String name = "Child";
            
            Child() {
                tjavascripthis("Default"); // 调用本类的另一个构造器
            }
            
            Child(String name) {
                super(); // 调用父类构造器
                this.name = name;
            }
            
            void display() {
                System.out.println("Child's display");
            }
            
            void show() {
                System.out.println(super.name); // 访问父类的name
                System.out.println(this.name);  // 访问本类的name
                super.display();               javascript// 调用父类的display
                this.display();                 // 调用本类的display
            }
        }
        
        public class Main {
            public static void main(String[] args) {
                Child child = new Child("Test")python;
                child.show();
            }
        }

        输出结果:

        Parent

        Test

        Parent's display

        Child's display

        总结

        • 使用super主要是为了在子类中明确访问父类的成员,避免与子类成员混淆

        • 使用this主要是为了在类内部明确访问当前对象的成员,避免与局部变量混淆

        • 两者都可以用于构造器调用,但都必须位于构造器的第一行

        • 在静态上下文中,两者都不能使用

        到此这篇关于Java中super与this关键字的用途及区别详解的文章就介绍到这了,更多相关Java中super与this关键字内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

        0

        上一篇:

        下一篇:

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        最新开发

        开发排行榜