IT十八掌大数据第五天作业

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

  静态代码块在类加载时被调用,用于类的初始化,且只被执行一次

 

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

  构造代码块执行顺序先于构造函数

  构造对象时 先调用构造代码块  然后是构造函数

和方法的声明位置无关

  构造代码块的作用是对成员变量进行初始化

  可以存放多个构造方法的共同代码 ,提升代码的重复性

 

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

  类加载时静态代码块不一定被执行

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

 Class.forName(String,boolean initialize,ClassLoader)可以控制加载时是否初始化,并执行静态代码块。

 

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

 

代码:

/**

 * Extends

 */

classPerson {

         public String name="Bruce";

         public int age=80;

         public Person(){

                  System.out.println("newPerson");

         }

         public void eat(){

                  System.out.println("eat");

         }

}

 

 

classMan extends Person{

         public String behaviour ="working";

 

         public Man(){

                  System.out.println("newMan");

         }

         public void eat(){

                  //super.eat();

                  System.out.println("Maneat");

         }

        

    public void ShowMan(String  name,int age,String  behaviour){

                 

                  System.out.println("manname is "+name+" , age is "+String.valueOf(age)+",behaviour is "+behaviour);

         }

        

}

 

classWoman extends Person{

         public String behaviour ="Shopping";

 

         public Woman(){

                  System.out.println("newWoman");

         }

         public void eat(){

                  //super.eat();

                  System.out.println("Womaneat");

         }

        

         public void ShowWoman(String  name,int age,String  behaviour){

                 

                  System.out.println("Womanname is "+name+" , age is "+String.valueOf(age)+",behaviour is "+behaviour);

         }

 

        

}

 

classExtendsTest{

         public static void main(String[] args){

 

            Man man=new Man();

                 

                  Woman woman=new Woman();

 

                  man.eat();

                 

                  man.name="Kal";

                 

                  man.age=95;

                 

                  man.ShowMan(man.name,man.age,man.behaviour);

                 

                  woman.eat();

                 

                  woman.name="Kistina";

                 

                  woman.age=100;

                 

                  woman.ShowWoman(woman.name,woman.age,woman.behaviour);

                 

 

                 

         }

}

 

执行结果:

 

 

Java文件

 

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

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

  抽象类:抽象方法只能存在于抽象类中。抽象类也必须要使用abstract修饰。

  有抽象方法的一定是抽象类,抽象类不一定有抽象方法

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

 

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

  abstract + static 是非法的修饰符组合。

  abstract + final  是非法的修饰符组合。

  abstract + private是非法的修饰符组合。

  abstract修饰过的方法或类必须要被继承并实现,但被final修饰过的是最终的,不能更改

  final修饰过的类或方法不能被继承因此abstract + final是非法的修饰符组合;


  abstract修饰过的方法或类必须要被继承并实现,但被private修饰过的类或方法是私有的,

  不能被继承因此abstract + static 是非法的修饰符组合;


  abstract修饰过的方法或类必须要被继承并实现并且包含abstract方法的类也必须是抽象类

  ,因此这个类不能被实例化,但加上static修饰后通过类名就可以创建对象进行实例化,相互

  矛盾,因此abstract + static 是非法的修饰符组合

 

7.superthis作用以及用法以及注意事项?

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

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

 this是只想对象自身的引用

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

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

 

8.定义接口

         1.IWhite

         2.IRich

         3.IBeanti

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

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

05_interface.java

代码:

 

 

/**

   * 定义接口

*/

 interface IWhite{

         public static final booleaniswhite=true;

          

          

         public void IWhite(boolean iswhite);

          

 }

 

 interface IRich{

          public static final boolean isrich=true;

          

          public void IRich(boolean isrich);

 

 }

 

 

 interface IBeanti{

          public static final boolean isbeautiful=true;

          

     public void IBeanti(boolean isbeautiful);

          

 }

 

 

  interface IBFM extends IWhite,IRich,IBeanti{

          

 }

 

 

 

classWomenStar implements IBFM{

        

      public void IWhite(boolean iswhite){

                   

                    System.out.println("WomenStar white is"+String.valueOf(iswhite));

                   

          }

        

          public void IRich(boolean isrich){

                   

                    System.out.println("WomenStar  rich is "+String.valueOf(isrich));

          }

          

          public void IBeanti(boolean isbeautiful){

                   

                    System.out.println("WomenStar beautifulis "+String.valueOf(isbeautiful));

                   

          }

          

          public static boolean getIswhite(){

                   

                    return iswhite;

                   

          }

          

          

         public static boolean getIsrich(){

                   

                    return isrich;

                   

          }

          

         public static boolean getIsbeautiful(){

                   

                    return isbeautiful;

                   

          }

          

                      

}

        

 

classEarchRicher{

        

         public     voidmarring(WomenStar woman){

                 

                 

                 

                  if(woman.getIswhite()&&woman.getIsbeautiful()&&woman.getIsrich())

                         

                  System.out.println("marringsuccess");

                 

                  elseSystem.out.println("marring fialed");

                 

                 

         }

        

        

}

 

classintefaceTest{

 

        

          public static void main(String[] args){

                   

                    WomenStar ws =new WomenStar();

                   

                    EarchRicher er= new EarchRicher();

                   

                    ws.IWhite(ws.iswhite);

                   

                    ws.IRich(ws.isrich);

                   

                    ws.IBeanti(ws.isbeautiful);

                   

                    er.marring(ws);

 

          }

        

}      

          

                   

 

执行结果: