public class Son extends Parent { public String name="jack"; public void init(){ super.init(); System.out.println(this.name); } public static void main(String[] args) { Son son = new Son(); son.init(); //init(son) System.out.println("## " + son.name); Parent p = new Son(); System.out.println("** " + p.name); } } public class Parent { public String name="tom"; public void init() { System.out.println(this.name); } } ———————————————————————————————— public class Parent { public void init() { System.out.println("1 init parent"); this.demo(); } public void demo() { System.out.println("2 demo parent"); } } public class Son extends Parent { public void init(){ super.init(); System.out.println("3 init son"); this.demo(); } public void demo() { System.out.println("4 demo Son"); } public static void main(String[] args) { //当前运行类 Son Son son = new Son(); son.init(); //init(son) } }
以上两种情况运行结果是?为什么?(成员变量和成员方法)
tom,jack,##jack,**tom
1,4,3,4
看下这段代码,以前没看懂一些代码为什么经常调用空方法,这类this通常是具体实现类对象,用途可以覆盖父类,没覆盖的话就执行父类的这个方法
public abstract class MGenericServlet2 implements Servlet,ServletConfig { private ServletConfig config; public void init(ServletConfig config) throws ServletException { //保存当前servlet的初始化信息 this.config = config; System.out.println("@@@@init"); this.init(); } public void init() throws ServletException { } } 。。。。。。。。。。。。。 public class DemoServlet extends MGenericServlet2 { //进行初始化操作 // @Override // public void init(ServletConfig config) throws ServletException { // //父类初始化 // super.init(config); // //子类初始化 // //xxxxx // // } @Override public void init() throws ServletException { System.out.println("........"); } }