1.文字阐述静态代码块的作用。


静态代码块在类加载的时候执行,而

且只执行一次。


*/

/*

class Static {

static {

System.out.println("static");

}

public Static(){ 

   System.out.println("()");

}

}


class Demo {

public static void main(String[] arge){

try {

Class.forName("Static");

Class.forName("Static");

} catch (Exception e){

e.printStackTrace();

}

}

}

*/


/*

2.构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么?

答:

构造代码块调用顺序优先于构造方法,和方法的声明位置无关。

构造代码块作用:a.可以存放多个构造方法的共同代码,提升代码的重复性

b.对成员变量初始化


*/



/*

class Static {

static {

System.out.println("static");

}

public Static(){ 

   System.out.println("()");

}

{

System.out.println("代码块");

}

}


class Demo {

public static void main(String[] arge){

try {

Class.forName("Static");

Class.forName("Static");

} catch (Exception e){

e.printStackTrace();

}

new Static();

}

}




3.类加载时,是否一定会执行静态代码块?如何手动控制类加载?

答:

类加载时默认执行静态代码块。

手动控制类加载使用Class.forName("classname"),默认加载类时,执行代码块。



4.定义类Person,Man,Woman形成继承关系


*/

/*

class Person {

}


class Man extends Person {

}


class Woman extends Person {

}




5.什么是抽象方法?什么是抽象类?抽象类是否有构造函数,是否可以重载?

答:

抽象方法是:没有方法体的方法。必须使用abstract修饰。

抽象类:含有抽象方法的类,就是抽象类,抽象类也必须要使用abstract修饰。

抽象类有构造函数,并且可以被重载

*/

/*

abstract class Person {

Person () {

}

Person (String a) {

System.out.println(a);

}

}


class Man extends Person {

Man (){

super("baba");

}

}

class Demo {

public static void main(String[] arge){

new Man();

}

}


6.抽象修饰符有哪些非法组合?并给出合理的解释?

答:

abstract + static 是非法的修饰符组合。static修饰可以更方便的访问公共的属性,抽象的直接访问时没有任何意义的

abstract + final  是非法的修饰符组合。final修饰的就是最终的,不能更改,抽象需要去实例化的,需要操作

abstract + private是非法的修饰符组合。抽象类需要子类继承来实例化,私有是不能继承的




7.super和this作用以及用法以及注意事项?

答:

super : 超类,作用方面类似于this.

super(...) : 访问超类的构造函数.只能用在第一行。默认是super();

this是只想对象自身的引用

this:指向对象自身的引用。

this(...)表示的是调用当前类的构造函数.只能用在第一行。默认this();


8.定义接口

1.IWhite

2.IRich

3.IBeanti

4.定义类,实现以上三个接口.(WomenStar)

5.定义土豪类(EarchRicher.marring(...))





*/


/*

5.定义土豪类(EarchRicher.marring(...))

答:


 * 土豪征婚案例,征婚对象要求至少具备白富美三种特性,土豪征婚使用匿名内部类对象实现.

 

interface IWhite {

}


interface IRich {

}


interface IBeanti {

}


interface IWhiteIRichIBeanti extends IWhite,IRich,IBeanti {

static final String name = "a ";

public abstract void show();

}


class WomenStar implements IWhiteIRichIBeanti {

public  void show(){}

}



class EarchRicher {

IWhiteIRichIBeanti  bfm;

public EarchRicher(IWhiteIRichIBeanti bfm) {

this.bfm = bfm;

}

public void showName(){

bfm.show();

}


}


class Demo {

public static void main(String[] arge){

IWhiteIRichIBeanti bfm = new IWhiteIRichIBeanti(){

public  void show(){

System.out.println("我叫王美丽");

}

 

};

 

EarchRicher man = new EarchRicher(bfm);

man.showName();

}

}