1.文字阐述静态代码块的作用。
静态代码块在类加载时默认会执行一次,并且只执行一次。

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

构造代码块优先于构造函数的调用。
和方法声明的位置无关,因为构造代码块在每次创建对象时默认会调

用一次。
构造代码块的作用是,初始化成员变量。

3.类加载时,是否一定会执行静态代码块?如何手动控制类加载?
一定会加载静态代码块。
手动控制类加载使用Class.forName("classname"),默认加载类时,
执行代码块。

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

class Person
{
}
class Man extends Person
{
}
class Woman    extends Person
{
}


5.什么是抽象方法?什么是抽象类?抽象类是否有构造函数,是否可
以重载?
抽象方法:没有{}方法体的方法是抽象方法,需要用abstract修饰。    

  抽象方法必须被重写。
抽象类:有抽象方法的类一定是抽象类,抽象类也可以没有抽象方法

。抽象类同样也需要使用abstract修饰。抽象类必须被继承。



6.抽象修饰符有哪些非法组合?并给出合理的解释?
abstract + static static修饰可以更方便的访问公共的属性,抽象

的直接访问时没有任何意义的

abstract + final 修饰的就是最终的,不能更改,抽象需要去实例

化的,需要操作

abstract + private private是不能被子类继承的,而抽象类是必须

要被子类继承才能实例化。


7.super和this作用以及用法以及注意事项?
super : 超类,作用方面类似于this.

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

();

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

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

this();

8.定义接口

1.IWhite

2.IRich

3.IBeauti

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

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

    public static void main(String[] args){
        IWRB womanStar = new IWRB(){
            
            public void white() {
                System.out.println();
            }
            public void rich() {
            }
            public void beauti() {
            }
        };
        RichMan man = new RichMan();
        man.marry(womanStar);
        
    }
}
interface IWhite
{
    public void white();
}
interface IRich
{
    public void rich();
}
interface IBeauti
{
    public void beauti();
}
interface IWRB extends IWhite, IRich , IBeauti
{
}
class RichMan
{
    public void marry(IWRB woman){
        System.out.println("find love");
    }