以前印象中一直有一个概念,说"如果没有提供构造方法,java将自动添加一个空的public的构造方法".现在看来,有2个问题,一,默认构造方法未必是public的,二,默认构造方法肯定有super();(Object类的是空构造方法). 实际情况是,默认构造方法的修饰符是和所在类的修饰符一致的. 比如 public class Test{ } 它的默认构造方法是 public Test(){ super(); } 而 class Test{ } 它的默认构造方法是 Test(){ su
以下代码无法通过编译: public class Test1 { public static void main(String[] args) { //int a=6; Foo obj=new Foo(); } } class Foo{ int value; public Foo(int initValue) { //给出的构造方法 value=initValue; } } 原因: 改类给出了一个自定义的构造方法,导致原有的默认构造方法无法使用,导致编译无法通过. public class Te
扯下闲篇先,本来今天预计整理下委托.事件.Lamada的笔记,然后再把单例模式的懒汉.饿汉模式看完. 在看到懒汉的双重加锁设计时,向同桌贩卖了下该设计的优点,结果反被同桌的一个问题难倒了~! 一. 有无静态构造方法,运行结果大不同 问题:请问下面代码的运行结果是什么? using System; namespace FirstTest { class A { public static string name = GetName ("Hello World~!"); public st
直接上代码: 代码1: public class ConstroctTest { private static ConstroctTest test = new ConstroctTest(); //静态变量sta1 未赋予初始值 public static int sta1; //静态变量sta1 赋予初始值20 public static int sta2 = 20; //构造方法中对于静态变量赋值 private ConstroctTest() { sta1 ++ ; sta2 ++ ;
本篇文章总结了一些关于Java构造方法的常见问题. 为什么创建了一个子类对象会调用其父类的构造方法 如下代码示例: package simplejava; class Super { String s; public Super() { System.out.println("Super"); } } class Sub extends Super { public Sub() { System.out.println("Sub"); } } public clas