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