一.this关键词介绍.

说明:该知识点仅仅限于本人对其了解的范围.

package com.study.java.oop;

/**
* 核心点:"this是指向对象本身的一个指针"
* 出现的位置: 只能用于方法的方法体内(且该方法是只能是类中的非静态方法)
* 静态方法和静态块中绝对不可使用
* 使用的方式:
* this(参数) >>> 调用的是类的构造方法 有参数调用的是 有参构造 无参 调用无参构造
* this.成员变量名 >>>调用类 的成员变量
* @author ys.zhangjy
*
*/
public class StudyOop02 {
private String username;
private String password;
private int number;
private int x;

public StudyOop02(){
this("空","空",20);//通过this()调用 构造方法

}

public StudyOop02(String username,String ps,int x){
this.username = username;// this.成员变量名 调用类的成员变量
this.password = ps;
this.x = x;
//System.out.println(username+"=="+password+"=="+x);
}

public StudyOop02(String username,int x){
this(username,"2个参数",x);
}

public void outprint(StudyOop02 s){
System.out.println("---------------");
System.out.println(s.username);
System.out.println(s.password);
System.out.println(s.number);
System.out.println(s.x);
System.out.println("---------------");
f();//写成 this.f() >>> 调用方法

}

private void f() {
int x = 200;
/**局部变量和成员变量 同名 this.变量名 调用类 的成员变量和方法
* 同时 有一个区分的效果**/
x = this.x++;
System.out.println("成员变量x的值: "+this.x+" 局部变量x的值: "+x);

}

public StudyOop02(String username, String passwrd, int number, int x) {
super();
this.username = username;
this.password = passwrd;
this.number = number;
this.x = x;
}

public static void main(String[] args) {
StudyOop02 s1 = new StudyOop02();
StudyOop02 s2 = new StudyOop02("小马甲",23);
s1.outprint(s1);
s2.outprint(s2);
/** 报错 this 不能在静态方法 中 使用**/
//System.out.println(this.username = "2222222");

}

/**
* 报错 this 不能在静态块 中使用
*/
/*static{
this.username = "xxx ";
this.password = "1111";
this.number = "11111";
this.x = 200000;
}*/

}

运行结果:

---------------
空
空
0
20
---------------
成员变量x的值: 21 局部变量x的值: 20
---------------
小马甲
2个参数
0
23
---------------
成员变量x的值: 24 局部变量x的值: 23

二.super 关键词使用.

父类:Father

package com.study.java.oop;

/**
* 出现的位置:子类中
* 使用 方式:子类中使用 核心点:子类在构造之前必定先构造父类 且super关键词只能出现在子类构造的第一行
* super.变量名 >>> 调用的是 父类中成员变量
* super.方法名 >>> 调用的是 父类中方法
* super(参数) >>> 调用父类的构造方法 有参调有参 无参调无参
* @author ys.zhangjy
*
*/
public class Father {
private String name ;
private String job;
private int age;
public String s = "父类中的变量";

public Father(){
System.out.println("父类无参构造被调用");
}

public Father(String name,String job,int age){
super();
this.name = name;
this.job = job;
this.age = age;

}

public void test(){
System.out.println("super.方法名 >>> 调用的是父类中的方法");
}

public void play(){

System.out.println("调用父类的play()方法");

}

}

子类:Sub

package com.study.java.oop;

public class Sub extends Father{
private String name ;
private String job;
private int age;
public String s = "子类中的成员变量";
public Sub(){
super();
System.out.println("子类无参构造被调用");
//super("小明","xiaoshou",20); 报错 说明super关键词只能出现在子类构造的第一行
}

public Sub(String name,String job,int age){
super("小明","xiaoshou",20);
System.out.println("子类有参构造被调用");
}

public void play(){
System.out.println("调用父类中的成员变量:"+super.s);
System.out.println("调用子类的play()方法");
super.test();
}

public void test(){
System.out.println("子类中的 方法");
}

public static void main(String[] args) {
Sub s = new Sub();
s.play();

}

}

运行结果:

父类无参构造被调用
子类无参构造被调用
调用父类中的成员变量:父类中的变量
调用子类的play()方法
super.方法名 >>> 调用的是父类中的方法

说明:

第一、在子类构造方法中要调用父类的构造方法,用“super(参数列表)”的方式调用,参数不是必须的。同时还要注意的一点是:“super(参数列表)”这条语句只能用在子类构造方法体中的第一行。
第二、当子类方法中的局部变量或者子类的成员变量与父类成员变量同名时,也就是子类局部变量覆盖父类成员变量时,用“super.成员变量名”来引用父类成员变量。当然,如果父类的成员变量没有被覆盖,也可以用“super.成员变量名”来引用父类成员变量,不过这是不必要的。
第三、当子类的成员方法覆盖了父类的成员方法时,也就是子类和父类有完全相同的方法定义(但方法体可以不同),此时,用“super.方法名(参数列表)”的方式访问父类的方法。

Java中关键词之this,super的使用的更多相关文章

  1. java中的this与super的区别

    java中的this与super的区别 1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位 代码如下: class Base { Base() { System.out.pr ...

  2. java中的this和super的作用和异同和C++中调用父类的构造函数

    来源于:http://www.cnblogs.com/hasse/p/5023392.html 这几天看到类在继承时会用到this和super,这里就做了一点总结,与各位共同交流,有错误请各位指正~ ...

  3. Java中关键字this、super的含义及使用

    Java语言中this的含义及作用: 关键字this用来指向当前实例对象(内存里正在运行的哪个实例对象),它的另一作用是用来区分对象的成员变量与方法的形参. 关键字super指的是当前对象里边的父对象 ...

  4. Java中的this和super

    在Java中有两个非常特殊的变量:this和super,这两个变量在使用前都是不需要声明的.this变量使用在一个成员函数的内部,指向当前对象,当前对象指的是调用当前正在执行方法的那个对象.super ...

  5. java中构造方法和方法super/this超类与子类中初始化顺序

    java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望 ...

  6. java中的this、super、static、final、abstract关键字的作用

    this关键字的作用 1.this是对象内部指代自身的引用,同时也是解决成员变量和局部变量同名问题: 2.this可以调用成员变量,不能调用局部变量: 3.this也可以调用成员方法,但在普通方法中可 ...

  7. Java中<? extends T>和<? super T>的理解

    ? 通配符类型 - <? extends T> 表示类型的上界,表示参数化类型的可能是T 或是 T的子类; <? super T> 表示类型下界(Java Core中叫超类型限 ...

  8. java中的this和super(构造函数)

    1.this:表示当前对象 常用的代码: public class A{ private String name; public void setName(String name){ this.nam ...

  9. Java中this和super关键字

    今天练习到Java中的this和super关键字,我有如下总结: 1.子类继承父类,子类初始化对象,必须先调用父类构造方法,因为随时有可能要使用父类的成员变量. 2.get和set方法只是对成员变量进 ...

随机推荐

  1. USACO Section 1.1-1 Your Ride Is Here

    USACO 1.1-1 Your Ride Is Here 你的飞碟在这儿 众所周知,在每一个彗星后都有一只UFO.这些UFO时常来收集地球上的忠诚支持者.不幸的是,他们的飞碟每次出行都只能带上一组支 ...

  2. PHPexcel数据导出

    使用PHPexcel数据导出,可以从网上下载phpexcel引入使用,下面是我做的简单的数据导出练习 一.下载phpexcel 二.引发这个导出(我这里是写了一个简单的点击事件) <div id ...

  3. Oracle自动备份.bat 最新更新(支持Win10了)

    20170418更新: 很多年没有用了,最近两天打开来用,发现在Win10下面At命令已经被淘汰不能使用了,还有不少命令工作方式和原来也不一样了 所以就更新了一下下,使用 schtasks 命令代替了 ...

  4. java写文件读写操作(IO流,字符流)

    package copyfile; import java.io.*; public class copy { public static void main(String[] args) throw ...

  5. select效果联动

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  6. css常用的属性方法 上篇

    自己是从java后台自学转前端的,所以平时一些简单的css+html就不写了,列出的都是新手常用的一些属性,会持续更新,大神勿喷,留给新手做个参考! 尤其是跟我一样自学前端的.     背景关联 ba ...

  7. android奋战的一周

    移动开发项目终于开始了,我也开始紧张起来了,就靠着培训时候学的一知半解的知识,作为一个主力不得不逼着自己不停的做实验,不停的学习. 有辛苦就有回报,我也对android开发中整体的框架有了些许的了解. ...

  8. Yii2框架---常用代码

    一.Php控制器跳转 return $this->redirect('/site/index/index');   二.回调自身控制器 self::actionXxxx();   三.获取当前用 ...

  9. SQL SERVER大话存储结构(1)_数据页类型及页面指令分析

                如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持!          SQLServer的数据页大 ...

  10. 在SCIKIT中做PCA 逆运算 -- 新旧特征转换

    PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降 ...