Java基础(basis)-----关键字this和super的作用

1.关键字this

  • 可以用来修饰属性、方法、构造器;this理解为当前对象或当前正在创建的对象
  • 局部变量与成员变量同名,成员变量被屏蔽,用"this.成员变量"的方式访问成员变量
  • 可以在构造器中通过“this(形参)”的方式显示的调用本类中其它重载的指定的构造器,在构造器内部必须声明在首行
package com.keyword;

/**
 * this关键字
 *
 * @author yyx 2019年2月15日
 */
public class ThisDemo {
    private String stuName;
    private Integer stuAge;
    private String stuSex;        

    public ThisDemo() {
        super();
        System.out.println("无参构造函数");
        this.sayWord(); //this调用方法
    }

    public ThisDemo(String stuName, Integer stuAge) {
        this();  // 调用重载的构造方法
        this.stuName = stuName;
        this.stuAge = stuAge;
        System.out.println("两个参数的构造函数");
    }

    public ThisDemo(String stuName, Integer stuAge, String stuSex) {
        this(stuName, stuAge);  // 调用重载的构造方法
        this.stuSex = stuSex;
        System.out.println("三个参数的构造函数");
    }

    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public Integer getStuAge() {
        return stuAge;
    }

    public void setStuAge(Integer stuAge) {
        this.stuAge = stuAge;
    }

    public String getStuSex() {
        return stuSex;
    }

    public void setStuSex(String stuSex) {
        this.stuSex = stuSex;
    }        

    @Override
    public String toString() {
        return "ThisDemo [stuName=" + stuName + ", stuAge=" + stuAge + ", stuSex=" + stuSex + "]";
    }

    public void sayWord() {
        System.out.println("我会说话!");
    }

    public static void main(String[] args) {
        ThisDemo thisDemo=new ThisDemo("张三",23,"男");
        System.out.println(thisDemo.toString());
    }

}

   注意:this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this

2.关键字super

  • 在子类构造方法中要调用父类的构造方法,用“super(参数列表)”的方式调用,参数不是必须的,该语句只能用在子类构造方法体中的第一行
  • 当子类方法中的局部变量或者子类的成员变量与父类成员变量同名时,可以用“super.成员变量名”来引用父类成员变量
  • 当子类的成员方法覆盖了父类的成员方法时,可以用“super.方法名(参数列表)”的方式访问父类的方法
  • 在子类构造方法中用“super(参数列表)”的方式调用父类的构造方法时,在构造方法内,“this(形参列表)”或“super(形参列表)”只能出现一个!
package com.keyword;

public class SuperDemo {
    public static void main(String[] args) {
        Student student = new Student("李四", 23, "女", "223311");
        student.sayWord();
    }
}

class Person {
    private String name;
    private Integer age;
    private String sex;

    public Person() {
        System.out.println("父类无参的构造方法!");
    }

    public Person(String name, Integer age, String sex) {
        this();// 调用本类重载的构造方法
        this.name = name;
        this.age = age;
        this.sex = sex;
        System.out.println("父类有参的构造方法!");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public void sayWord() {
        System.out.println("我是父类,人都会说话!");
    }
}

class Student extends Person {
    private String cno;

    public Student(String name, int age, String sex, String cno) {
        // 调用父类构造器
        super(name, age, sex);
        this.cno = cno;
    }

    public String getCno() {
        return cno;
    }

    public void setCno(String cno) {
        this.cno = cno;
    }

    public void sayWord() {
        // 调用父类方法
        super.sayWord();
        System.out.println("我是子类,我也会说话!");
        super.setName("本来叫李四,改名叫张三");
        // 调用父类获取属性方法
        System.out.println(super.getName());
    }

}

原文地址:https://www.cnblogs.com/fengfuwanliu/p/10376017.html

时间: 2024-10-12 22:45:26

Java基础(basis)-----关键字this和super的作用的相关文章

Java基础(basis)-----关键字break、continue、return的区别

   1.break      break只能用于switch语句和循环语句中,跳出当前循环:但是如果是嵌套循环, 则只能跳出当前的这一层循环,只有逐层break才能跳出所有循环 for (int i = 0; i < 20; i++) { if (i == 10) { break; // 在执行i==6时强制终止循环,i==10不会被执行 } System.out.println(i); }    2.continue      continue 只能用于循环语句中,终止当前循环,但是不跳出循

Java基础-synchronized关键字的用法(转载)

原文地址:http://blog.csdn.net/cq361106306/article/details/38736551 synchronized--同步 顾名思义是用于同步互斥的作用的. 这里精简的记一下它的使用方法以及意义: 当synchronized修饰?this或者非静态方法或者是一个实例的时候,所同步的锁是加在this或者实例对象引用上面的.比如a,b同为Main类的实例化对象,a调用被同步的方法,和b调用被同步的方法,没有形成互斥.但是不同线程的a对象调用被同步的方法就被互斥了.

JAVA基础(十六)Super关键字

Super关键字: Super关键字的特点: This  与super 不能同时存在第一行: 构造方法第一行都有一个默认语句 super()无参构造: 私有化后显示定义无法在用默认, 空参时先调父类构造在子类构造,因为默认语句 super() 第一行只要this在就没有super. super的调用: super:代表当前对象父类的引用 super.成员变量 调用父类的成员变量 super(…) 调用父类的构造方法 super.成员方法 调用父类的成员方法 //定义Person类,将Studen

黑马程序员---java基础语法---关键字,常量,变量,运算符

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 第一讲:java语言基础 1.关键字的定义和特点 定义:被Java语言赋予了特殊含义的单词 特点:关键字中所有字母都为小写 用于定义数据类型的关键字  class interface byte short int  long  float

java基础:关键字

关键字: 1.被Java语言赋予特定含义的单词 2.特点: 全部小写 3.注意事项: A:goto和const作为保留字存在. B:类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记 在Notepad++这种的高级记事本中关键字会发生颜色变化. 注意: main不是关键字 用于定义访问权限修饰符的关键字 private protected public 用于定义类,函数,变量修饰符的关键字 abstract final static synchronized 用于定义类与类之间关系

黑马程序员----java基础之关键字、标示符、变量、数据类型、附相关面试题

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1:关键字(掌握) (1)被Java语言赋予特定含义的单词 (2)特点: 全部小写.如:class.static等 (3)注意事项: A:goto和const作为保留字存在. B:类似于Notepad++这样的高级记事本会对关键字有特殊颜

java基础 this 关键字!

为了程序的可读性,通常将一个类中的表示同一属性的变量进行统一的命名,但是这样做又会导致成员变量与局部变量名字冲突导致无法访问成员变量,为了解决这个问题,java中引入了this这个关键字!所以this 的作用就是用于在方法中访问对象的其他成员! this关键字有以下三种常见用法: 1)通过this关键字可以明确的访问成员变量,解决与局部变量重名的矛盾!(成员变量与局部变量冲突的时候) class Student{ int id; public Student(int id){ this.id=i

Java基础学习笔记九 Java基础语法之this和super

构造方法 我们对封装已经有了基本的了解,接下来我们来看一个新的问题,依然以Person为例,由于Person中的属性都被private了,外界无法直接访问属性,必须对外提供相应的set和get方法.当创建Person对象的时候,Person对象一创建就要明确其姓名和年龄,那该怎么做呢? 构造方法介绍 在开发中经常需要在创建对象的同时明确对象的属性值,比如员工入职公司就要明确他的姓名.年龄等属性信息.也就是在创建对象的时候就要做的事情,当使用new关键字创建对象时,怎么给对象的属性初始化值呢?这就

Java基础:关键字final,static

一 . final 含义:adj.最后的,最终的; 决定性的; 不可更改的.在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误. 1)修饰成员变量.局部变量:在编写程序时,我们经常需要说明一个数据是不可变的,我们成为常量.在java中,用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值.更重要的是,final会告诉编译器,