静态代码块、类的继承和接口

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

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

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

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

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

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

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

8.定义接口

1.IWhite

2.IRich

3.IBeanti

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

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

----------------------------------------------------------------------------------------------------

    1. 代码块是类的组成成分之一,和成员变量,成员函数,内部类,并列共同组成类。静态代码块只在类加载的时候执行一次。
    2. 构造代码块会先于构造函数之前调用,相对于构造函数来说与声明的位置无关。构造代码块的作用:1,提升代码的重用性,可以讲每一个构造函数的相同代码提取出来。2 初始化对象
    3. 类加载时不一定会执行静态代码块。默认的方式是执行。如果是以Java反射机制调用class对象,则可以手动选择加载或不加载。class.forName("类名",boolean 是否加载);
    4. class person
              {
              }
              class man extends person 
              {
              }

      class woman extends person
              {
              }

    5. 抽象方法没有方法体。抽象类是指有抽象方法的类。java教程里说的是抽象类有构造函数,可以被重载
    6. private abstract是非法的,如果不能被继承则没有办法被重写

      abstract final是非法的,final不可以被修改,不能被修改则不能被继承者重写

      abstract static是非法的,static是静态的在类加载的时候就已经存在方便直接用类访问,abstract没有意义,访问无效

    7. super是指向超类对象的指针,this是指向本对象的指针。super()默认出现在一切对象构造函数的第一行表示创建超类对象。super(..)和this(..)都只能用在构造函数的第一行,且只能二选一。
    8. interface IWhite
              {
              }
              interface IRich
              {
              }
              interface IBueaty
              {
              }

      interface IAll extends IWhite,IRich,IBueaty
              {
              }

    9. public class womanStar implements IAll{

      }

    10. class EarnRicher{

      public void marry(IAll woman){

      }

      }

      public static void main(String[] args){

      womanStar star=new womanStar()

      new EarnRicher().marry(star)

      }

时间: 2024-11-12 12:36:53

静态代码块、类的继承和接口的相关文章

java基础第五天_静态代码块、类的继承和接口

1.文字阐述静态代码块的作用. 静态代码块在类加载的时候执行,而且只执行一次. 2.构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么? 构造代码块调用顺序优先于构造方法,和方法的声明位置无关. 构造代码块作用:a.可以存放多个构造方法的共同代码,提升代码的重复性 b.对成员变量初始化 3.类加载时,是否一定会执行静态代码块?如何手动控制类加载? 类加载时默认执行静态代码块. 手动控制类加载使用Class.forName("classname"

IT十八掌作业_java基础第五天_静态代码块、类的继承和接口

1.文字阐述静态代码块的作用. A:静态代码块常用来执行类属性的初始化,且只被执行一次. 2.构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么? 执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 和位置无关. 构造代码块在每次创建对象是都会执行. 3.类加载时,是否一定会执行静态代码块?如何手动控制类加载? 类加载时默认加载静态代码块,class.forName(String name) 或 class.forNa

Java类的各种成员初始化顺序如:父子类继承时的静态代码块,普通代码块,静态方法,构造方法,等先后顺

class B extends A ,然后A类也就是父类里面有静态代码块,普通代码块,静态方法,静态成员变量,普通成员变量,普通方法.子类也是这样,然后继承之后,关于程序打印输出的结果.涉及到Java类的各种成员的初始化顺序.经测试,得到如下结论: 1.父类[静态成员]和[静态代码块],按在代码中出现的顺序依次执行.2.子类[静态成员]和[静态代码块],按在代码中出现的顺序依次执行.3.父类的[普通成员变量被普通成员方法赋值]和[普通代码块],按在代码中出现的顺序依次执行.4.执行父类的构造方法

Java类的装载过程和静态代码块

在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载.连接和初始化,其中连接又可以分成校验.准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下:1.装载2.连接3.初始化 一.装载阶段 装载阶段由三个基本动作组成1.通过类型的完全限定名,产生一个代表该类型的二进制数据流2.解析这个二进制数据流为方法区内的内部数据结3.构创建一个表示该类型的java.lang.Class类的实例 另外如果一个类装载器在预先装载的时遇到缺失或错误的class文

代码逻辑题之继承-静态代码块-main方法执行顺序

前提知识: (暂未发布)面向对象继承相关知识 (暂未发布)static与静态代码块 JVM入门之main方式详解 (暂未发布)JVM加载类的顺序 public class ParentMainTest { static int x; static { x++; System.out.println("ParentMainTest_static..." + x); } public static void main(String[] args) { new SonMainTest(6);

静态代码块、构造代码块、构造函数以及Java类初始化顺序

静态代码块:用staitc声明,jvm加载类时执行,仅执行一次构造代码块:类中直接用{}定义,每一次创建对象时执行.执行顺序优先级:静态块,main(),构造块,构造方法. 构造函数 public HelloA(){//构造函数 } 关于构造函数,以下几点要注意:1.对象一建立,就会调用与之相应的构造函数,也就是说,不建立对象,构造函数时不会运行的.2.构造函数的作用是用于给对象进行初始化.3.一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多次. 构造代码块 {//构造代码块 }

Java误区: 静态代码块,当把类将被载入到自己主动运行?

JAVA静态代码块会在类被载入时自己主动运行? 非常多Java开发人员的思想,被这个思想深深的轮奸了n遍,传播这个错误思想的博客,在网上一堆,越来越多的人被轮奸. 如:http://blog.csdn.net/leeyu35/article/details/7755304 那么我们程序来证明这句话是错误的: class MyClass1 { static {//静态块 System.out.println("static block "); } } public class Main

JAVA之父子类的构造函数、静态代码块等执行顺序

欢迎转载,请附出处: http://blog.csdn.net/as02446418/article/details/47092769 最近在做项目时遇到了Java构造函数,代码块的一些执行顺序方面的知识,随兴做了个实验,毕竟实践出真知嘛.遇到的问题简单说一下就是在子类A继承父类B的时候,如果在代码中 A a = new A(); 这个时候父类和子类的静态代码块和构造函数执行的先后顺序到底是怎么样的呢? 我得出的结论是 父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B

Java类的静态成员、静态代码块、普通成员、普通代码块、构造方法初始化执行的顺序

今天阅读<Java编程思想(第4版中文版)>,刚复习到类中成员的初始化这一知识点.为了加深印象和给其他人一点参考,参考书中示例并加以修改得到以下代码: 文件名:HelloWorld.java 包名:main package main; class Bowl { Bowl(int marker){ System.out.println("Bowl("+marker+")"); } void f1(int marker){ System.out.printl