反编译会隐藏子类构造函数里面的super()语句吗?解决方案
反编译会隐藏子类构造函数里面的super()语句吗?
这是一个加包后的class反编译出来的代码:
在son(int a,int b)的构造语句中没有super()语句,我自己编程试了下,这些代码会直接报错,必须在son(int a,int b)的第一行加上super()才行,请问:
1.这是不是因为反编译软件的问题,隐藏了son(int a,int b)构造方法的super语句?还是其他什么情况?
2.我调用son(int a,int b)方法的话,son.kind能被赋值为“test”吗?
反编译软件叫“Java Decompiler”
------解决方案--------------------
反编译不一定100%恢复原样
这是一个加包后的class反编译出来的代码:
- Java code
//父类 public abstract class fathr { private final String kind; public fathr(String k) { this.kind = k; } } //子类 public class son extends fathr{ int a,b; public son() { super("test"); } public son(int a,int b) { this.a = a; this.b = b; } }
在son(int a,int b)的构造语句中没有super()语句,我自己编程试了下,这些代码会直接报错,必须在son(int a,int b)的第一行加上super()才行,请问:
1.这是不是因为反编译软件的问题,隐藏了son(int a,int b)构造方法的super语句?还是其他什么情况?
2.我调用son(int a,int b)方法的话,son.kind能被赋值为“test”吗?
反编译软件叫“Java Decompiler”
------解决方案--------------------
反编译不一定100%恢复原样
- Java code
public son() { super("test"); } public son(int a,int b) { this(); //这样也是可以的,所以和super,this应该没关系,看反编译具体如何实现 this.a = a; this.b = b; }