您的位置:首页 > 编程语言 > Java开发

java程序执行顺序易乱点

2016-11-20 20:14 260 查看
1,

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");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: