java程序执行顺序易乱点
2016-11-20 20:14
260 查看
1,
/**
* 执行结果:
* 静态块
构造块
构造方法
构造块
构造方法
构造块
构造方法
**/
2,
/**
* 执行结果:
* Person静态块
Saler静态块
Person构造块
Person构造方法
Saler构造块
Saler构造方法
Person构造块
Person构造方法
Saler构造块
Saler构造方法
**/
3,
class A{
public A(String msg){
System.out.println("msg="+msg);
}
}
class B extends A{
public B(String msg) {
//此处报错:implicit super constructor A() is undefined.Must explicitly invoke another constructor
}
}
如果要正确就必须改成
正确1:
class A{
public A(String msg){
System.out.println("msg="+msg);
}
}
class B extends A{
public B(String msg) {
super(msg);
}
}
正确2:
class A{
public A(){
}
public A(String msg){
System.out.println("msg="+msg);
}
}
class B extends A{
public B(String msg) {
}
}
解释说明:子类的构造方法,如果没有调用父类的构造方法,默认调用父类的无参构造函数,如果父类没有无参构造函数,子类就得手动调用父类的有参数构造函数。
项目应用举例
参数从system.properties读取,定义一个类,参数定义成static类型。
package org.test; class Person{ public Person(){ System.out.println("构造方法"); } { System.out.println("构造块"); } static{ System.out.println("静态块"); } } public class A { public static void main(String[] args) { new Person(); new Person(); new Person(); } }
/**
* 执行结果:
* 静态块
构造块
构造方法
构造块
构造方法
构造块
构造方法
**/
2,
package org.test; class Person{ public Person(){ System.out.println("Person构造方法"); } { System.out.println("Person构造块"); } static{ System.out.println("Person静态块"); } } class Saler extends Person{ public Saler(){ System.out.println("Saler构造方法"); } { System.out.println("Saler构造块"); } static{ System.out.println("Saler静态块"); } } public class A { public static void main(String[] args) { new Saler(); new Saler(); } }
/**
* 执行结果:
* Person静态块
Saler静态块
Person构造块
Person构造方法
Saler构造块
Saler构造方法
Person构造块
Person构造方法
Saler构造块
Saler构造方法
**/
3,
class A{ public A(String msg){ System.out.println("msg="+msg); } } class B extends A{ public B(String msg){ //此处报错:implicit super constructor A() is undefined.Must explicitly invoke another constructor } }
class A{
public A(String msg){
System.out.println("msg="+msg);
}
}
class B extends A{
public B(String msg) {
//此处报错:implicit super constructor A() is undefined.Must explicitly invoke another constructor
}
}
如果要正确就必须改成
正确1:
class A{
public A(String msg){
System.out.println("msg="+msg);
}
}
class B extends A{
public B(String msg) {
super(msg);
}
}
正确2:
class A{
public A(){
}
public A(String msg){
System.out.println("msg="+msg);
}
}
class B extends A{
public B(String msg) {
}
}
解释说明:子类的构造方法,如果没有调用父类的构造方法,默认调用父类的无参构造函数,如果父类没有无参构造函数,子类就得手动调用父类的有参数构造函数。
项目应用举例
参数从system.properties读取,定义一个类,参数定义成static类型。
public class SystemSetting { /** 采购平台静态服务器域名 **/ public static String URL; /** * 从配置文件中读取相关配置<br/> * 如果没有相关配置则使用默认 */ static { try { init(); } catch (Exception e) { e.printStackTrace(); } } public static void init() throws Exception{ String path = "/config/system.properties";//读一个配置文件,地址自己定义 InputStream in = new FileInputStream( new File(path)); Properties props = new Properties(); props.load(in); URL = props.getProperty("url"); } }
相关文章推荐
- eclipse debug java程序,为什么不按照行顺序执行?
- java编程思想static之程序执行顺序
- java 程序中try catch / throw / 函数名上throws 具体执行顺序和扔异常捕获异常的概念模型
- java中子类继承父类程序执行顺序问题
- Java复习(3)—java程序代码执行顺序
- JAVA子父类内部程序的执行顺序
- Java程序执行顺序
- java中子类继承父类程序执行顺序
- Java程序执行顺序
- java中程序执行顺序
- java程序在执行过程中,类,对象以及它们成员加载、初始化的顺序如下:
- 程序执行顺序-java
- JAVA程序执行顺序
- JAVA程序执行顺序
- JAVA程序执行顺序
- JAVA程序执行顺序
- JAVA程序执行顺序,你了解了吗?
- java子父类内部程序的执行顺序
- java程序执行顺序
- 深入了解Java程序执行顺序