`
sls0919
  • 浏览: 125818 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java学习--super和this

    博客分类:
  • java
阅读更多

简单说,this指当前对象或类的一个实例;super为继承中调用父类的特殊关键字

 

知识点:

1 通过 super 调用父类的隐藏变量,必须要在父类中声明 getter 方法,因为声明为 private 的数据成员对子类是不可见的。

 

public class Demo{
    public static void main(String[] args) {
        Dog obj = new Dog();
        obj.move();
    }
}
class Animal{
    private String desc = "Animals are human's good friends";
    // 必须要声明一个 getter 方法
    public String getDesc() { return desc; }

    public void move(){
        System.out.println("Animals can move");
    }
}
class Dog extends Animal{
    public void move(){
        super.move();  // 调用父类的方法
        System.out.println("Dogs can walk and run");
        // 通过 getter 方法调用父类隐藏变量
        System.out.println("Please remember: " + super.getDesc());
    }
}

 

 

2 当成员变量与方法内部的参数重名时,this的作用就显示出来了,当然还可以通过this调用本对象的所有方法和属性

public class Demo{
    public String name;
    public int age;
  
    public Demo(String name, int age){
        this.name = name;
        this.age = age;
    }
  
    public void say(){
        System.out.println("网站的名字是" + name + ",已经成立了" + age + "年");
    }
  
    public static void main(String[] args) {
        Demo obj = new Demo("微学苑", 3);
        obj.say();
    }
}

 

 

 

 

注:无论是 super() 还是 this(),都必须放在构造方法的第一行。

  • 在构造方法中调用另一个构造方法,调用动作必须置于最起始的位置。
  • 不能在构造方法以外的任何方法内调用构造方法。
  • 在一个构造方法内只能调用一个构造方法。

如果编写一个构造方法,既没有调用 super() 也没有调用 this(),编译器会自动插入一个调用到父类构造方法中,而且不带参数。 

最后注意 super 与 this 的区别:super 不是一个对象的引用,不能将 super 赋值给另一个对象变量,它只是一个指示编译器调用父类方法的特殊关键字。

 

本文示例参考自:http://www.weixueyuan.net

分享到:
评论

相关推荐

    【IT十八掌徐培成】Java基础第04天-06.super-super()-this-this().zip

    通过观看"【IT十八掌徐培成】Java基础第04天-06.super-super()-this-this().avi"的视频教程,开发者可以更直观地理解这些概念,并通过示例学习如何在实际编程中有效地运用`super`、`super()`和`this`。这个视频涵盖...

    Java中的this和super的用法 

    Java 中的 this 和 super 的用法 Java 中的 this 和 super 是两个非常重要的关键字,它们都是用来访问对象的成员变量和方法的。下面我们将详细地讨论这两个关键字的用法和区别。 一、基础知识 1. super(参数):...

    Java中this与super的用法

    Java 中的 this 和 super 是两个非常重要的关键字,它们都是用来访问对象或父类的成员变量或方法的。下面我们将详细地讲解它们的用法和区别。 首先,让我们来看一下 this 关键字。this 关键字是用来访问当前对象的...

    Java中this与super的区别

    Java中this与super的区别 this&super; 什么是this,this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。 Java关键字this只能用于方法的方法体内。当一个对象创建后, Java虚拟机(JVM)就...

    java中this 与super的详解

    java中this 与super的详解

    java---- 封装,接口,继承,覆盖,构造过程,多态,static、this、super、final用法

    通过以上对封装、继承、覆盖、构造过程、多态以及 `static`、`this`、`super` 和 `final` 关键字的详细介绍,我们可以更好地理解和运用Java的核心概念和技术点,从而编写出更加高效、灵活和易于维护的代码。

    java中this与super用法

    在 Java 中,this 和 super 是两个重要的关键字,它们都是用于访问当前对象或父类中的成员变量或方法的。 this 用法 this 的用法在 Java 中大体可以分为三种: 1. 普通的直接引用 在类的成员方法中,可以使用 ...

    javathis和super用法 this和 super 关键字的区别

    ### Java中的this与super关键字...`this`和`super`关键字在Java中具有重要的作用,正确理解和应用它们对于开发高质量的Java应用程序至关重要。通过本文的介绍,希望能够帮助读者更好地掌握这两个关键字的用法及其区别。

    java中的this和super

    ### Java中的this和super #### 一、引言 在Java编程中,`this` 和 `super` 是两个非常重要的关键字,它们可以帮助我们更清晰地处理类中的成员变量和方法,尤其是在面向对象编程中,正确理解和使用这两个关键字对于...

    JAVA进阶-Java继承,多态,重写,修饰符以及super与this使用,Oject对象

    在Java编程语言中,继承、多态、重写、修饰符以及`super`和`this`的使用是面向对象编程的核心概念。这些知识点对于理解和编写高效、可维护的代码至关重要。 1. **Java继承**: Java继承允许一个类(子类)继承另一...

    java 1-11章学习课件

    - this关键字和super关键字 5. **第五章:封装、继承和多态** - 封装:隐藏实现细节,提供公共接口 - 继承:类之间的层次结构,单继承与多层继承 - 多态:同一接口,多种实现,接口和抽象类的应用 6. **第六章...

    Java中static、this、super、final用法

    在Java编程语言中,`static`, `this`, `super`, 和 `final` 是四个非常重要的关键字,它们分别代表不同的概念并具有特殊的用法。 一、`static` `static` 关键字用于声明类级别的成员(变量或方法),这意味着它们...

    Java 基础学习PPt---适合准备学习Java的初学者

    - this关键字和super关键字的深入理解及其应用场景。 通过这五个章节的学习,初学者将对Java语言有全面的认识,能够编写简单的程序并理解面向对象的基本概念。后续深入学习时,可以继续探索集合框架、IO流、多线程...

    Java中static、this、super、final用法.doc

    在Java编程语言中,`static`、`this`、`super`和`final`是四个非常重要的关键字,它们各自有着特定的用途和含义。 1. **static**: 静态关键字`static`用于声明类级别的变量和方法,即静态变量和静态方法。静态变量...

    Java中两个非常特殊的变量:this和super

    在Java编程语言中,`this`和`super`是两个非常关键的特殊变量,它们提供了在类和对象间导航的能力。这两个关键字无需提前声明,它们各自有着特定的用途。 首先,`this`关键字用于引用当前对象。在成员函数内部,`...

    Java中static、this、super、final用法简谈

    Java中的`static`、`this`、`super`和`final`是四个非常重要的关键字,它们在编程中扮演着至关重要的角色。这篇文章将简要介绍这些关键字的基本用法及其应用场景。 1. **static** `static`关键字用于声明类级别的...

Global site tag (gtag.js) - Google Analytics