发现java编译器的一个漏洞

qq_33626207 2017-01-12 05:54:25


按理说这个this 毫无意义 应该报错的。
...全文
332 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Our_existence 2017-01-13
  • 打赏
  • 举报
回复
你继承抽象类时,你的子类也会继承相应的属性,这里的对象就是继承该抽象类的子类的实例
洒洒丁 2017-01-13
  • 打赏
  • 举报
回复
你现在不调用,自然就不加载,不加载自然就不会有问题,如果你加载了,你必有一个对象,那么this就有用了
洒洒丁 2017-01-13
  • 打赏
  • 举报
回复
引用 3 楼 Our_existence 的回复:
你继承抽象类时,你的子类也会继承相应的属性,这里的对象就是继承该抽象类的子类的实例
bingo
kinoymir 2017-01-13
  • 打赏
  • 举报
回复
当你不仅类的成员变量有个A,方法里也有个变量A的时候,你就知道这个this有什么用了。
qq_33626207 2017-01-13
  • 打赏
  • 举报
回复
引用 4 楼 yuxiangaaaaa 的回复:

public abstract class Test {
	private String id; 
	public Test(String id){
		 this.id = id;
		 System.out.println(this.getClass().getName());
	 }
	public static void main(String args[]){
		new TestSub("11");
	}
}
class TestSub extends Test{

	public TestSub(String id) {
		super(id);
	}	
}
这里this打印的是TestSub
看到我方法的访问修饰符了没? 子类怎么访问这个方法 还有你这个是构造方法里面的this 当然指向的是子类
自由自在_Yu 2017-01-13
  • 打赏
  • 举报
回复

public abstract class Test {
	private String id; 
	public Test(String id){
		 this.id = id;
		 System.out.println(this.getClass().getName());
	 }
	public static void main(String args[]){
		new TestSub("11");
	}
}
class TestSub extends Test{

	public TestSub(String id) {
		super(id);
	}	
}
这里this打印的是TestSub
qq_33626207 2017-01-12
  • 打赏
  • 举报
回复
引用 1 楼 Our_existence 的回复:
.......这并不是漏洞!this是指代当前对象
那你告诉我 私有的抽象方法哪来的对象?
Our_existence 2017-01-12
  • 打赏
  • 举报
回复
.......这并不是漏洞!this是指代当前对象

23,402

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧