面向对象编程----this隐式参数_内存分析
this关键字
普通方法中,this总是指向调用该方法的对象
构造方法中,this总是指向正要初始化的对象
This不能用于static方法。(讲完static,大家就知道为什么了!)
package cn.bjsxt.oop.testThis;
public class Student {
String name;
int id;
// 构造方法里面没有this这个变量,所以里面用不了
public void saykkkHollo() {
System.out.println();
}
// 构造方法中,this总是指向正要初始化的对象
public Student(String name,int id) {
// this();
//通过this调用其他构造方法 必须位于第一句
// this(name);
System.out.println("这里"+name);
// this("思维");
// 赋值号后面的name如果直接写name,会根据就近原则,
// 直接指这里的局部变量参数String name
// 所以这里写name=name;相当于没写
// name=name;
// this指向了我们当前的一个对象
this.name=name;
this.id=id;
System.out.println(this.name);
System.out.println(this.id);
}
// 构造方法中,this总是指向正要初始化的对象
public Student(String name) {
System.out.println("一个对象");
this.name=name;
System.out.println(this.name);
}
public Student(int id) {
this.id=id;
System.out.println("构造一个对象"+this.id);
}
public Student() {
System.out.println("构造一个对象");
}
public void setName(String name) {
this.name=name;
System.out.println(this.name);
}
public void study() {
// 普通方法中,this总是指向调用该方法的对象
// this我们把它称之为隐式参数,有这个参数 隐藏起来了,
// 每一个对象的方法没有static修饰,
// 它的参数里面(无论有没有参数)虚拟机翻译的时候是默认有参数的,
// 为this把它作为参数传进来,这里的this不需要写出来,写出来就错了
// 指什么,指代当前对象
// this也跟形参一样,一回事。
// super它父类对象的引用,通常也可以传过来
this.name="王五";
System.out.println(this.name);
}
public static void main(String[] args) {
Student s=new Student("www",13);
Student sss=new Student("东方");
s.setName("窝草");
Student ss=new Student();
ss.setName("高山流水");
ss.study();
// s.name="eee";
// System.out.println(s.name);
}
}
本文来自博客园,作者:神奇的梦,转载请注明原文链接:https://www.cnblogs.com/fantasticDream/p/16307395.html
浙公网安备 33010602011771号