一.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. js中元素(图片)切换和隐藏显示问题

    这个知识点其实也简单,(当然是在理清思路的情况下),在没预习的情况下听的还真是艰难,上课以来唯一的一次懵逼了一天,感觉乱乱的,全是新属性,所以今晚的我破天荒的熬夜敲代码,一定要弄懂! 现在就来梳理下头 ...

  2. Android系统--输入系统(八)Reader线程_使用EventHub读取事件

    Android系统--输入系统(八)Reader线程_使用EventHub读取事件 1. Reader线程工作流程 获得事件 size_t count = mEventHub->getEvent ...

  3. spring学习总结二-----面向切面编程(AOP)思想

    上一篇spring博客简总结了spring控制反转和依赖注入的相关思想知识点,这篇博文对spring的面向切的编程思想进行简单的梳理和总结. 一.面向切面的思想 与面向对象的纵向关系概念不同,面向切面 ...

  4. HTTP笔记

    "你知道当我们在网页浏览器(Web browser)的地址栏中输入 URL 时,Web 页面是如何呈现的吗?" HTTP协议 HTTP协议(HyperText Transfer P ...

  5. [ext4]010 磁盘布局 - 如何查找inode的磁盘位置

    在linux系统中,任何一个文件,都有一个inode与其对应,也就是说,在一个文件系统中,一个文件都有唯一的ino来标示他,那么在ext4系统中,ino是如何确定的哪? 当我们新创建的文件或目录时,会 ...

  6. Vue2.x中的父子组件相互通信

    业务场景:(这里指的是直接父子级关系的通信) 美女(子组件)将消息发送给大群(父组件) 大群(父组件)收到美女发送的消息后再回个信息给美女(子组件) 父组件 template <template ...

  7. #pragma mark指令的作用

    概述: 可以简单地给代码进行一个分组,方便代码的查找(可以不用记,无所谓的小东西) 例如: #pragma mark dog类的声明 @interface Dog :NSObject @end @im ...

  8. ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小

    在使用Oralce时,直接取出 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换时,会出现ORA-22835的异常,以下是个人的解决方案 create or replace Function ...

  9. PAT1030 Travel Plan (30)---DFS

    (一)题意 题目链接:https://www.patest.cn/contests/pat-a-practise/1030 1030. Travel Plan (30) A traveler's ma ...

  10. vim 和grep 正则表达式相似和区别

    正则表达式由两种基本字符类型组成:原义(正常)文本字符和元字符.元字符使正则表达式具有处理能力.所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符 ...