阅读背景:

【JAVA学习路-think in java】p163:在子类对象生成时,基类构造器调用子类同名函数发生的意料之外的事

来源:互联网 
package pkg; //main public class p163 { public static void main(String[] args) { new Gextend(5); } } //* class Gbase{ Gbase(){ System.out.println("Gbase() before invoking methods:"); method_public();//DYNAMIC method_protect();//DYNAMIC method_default();//DYNAMIC method_static(); method_final(); method_private(); System.out.println("Gbase() after invoked methods"); } public void method_public() { System.out.println("Gbase.method_public()"); } protected void method_protect() { System.out.println("Gbase.method_protected()"); } void method_default() { System.out.println("Gbase.method_default()"); } static void method_static() { System.out.println("Gbase.method_static()"); } final void method_final() { System.out.println("Gbase.method_final()"); } private void method_private() {//is final function System.out.println("Gbase.method_private()"); } } //** class Gextend extends Gbase{ private int radius=1; static int rad=2; Gextend(int r){ radius=r; System.out.print("Gextend(),radius="+radius); } public void method_public() { System.out.println("Gextend.method_public(),radius="+radius); } protected void method_protect() { System.out.println("Gextend.method_protected(),radius="+radius); } void method_default() {//will @override Gbase.method_default() System.out.println("Gextend.method_default(), radius="+radius); } static void method_static() { System.out.println("Gextend.method_static()"+rad); //System.out.println("Gextend.method_static()"+radius); //Cannot make a static reference to the non-static field radius } //final void method_final() NOT allowed for FINAL private void method_private() {//is final function System.out.println("Gextend.method_private()"+radius); } } package pkg; //main public class p163 { public st



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: