• 面向对象之构造器、代码块和内部类


    一、构造器(构造方法)

      1、构造器的声明格式

      • 语法格式

          

      • 举 例:

          

      • 注:构造器都会默认的声明super关键字,调用父类的构造器,不显示的声明,则程序会自动的调用Object类的无参构造器

      2、构造器的特征

      • 它具有与类相同的名称
      • 它不声明返回值类型(与声明为void不同)
      • 不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值

      3、构造器的作用:是类都有构造器,构造器是区分接口和类的关键

      • 创建类的对象

          

      • 初始化对象的属性

          

      4、说明

      • 1.如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器,默认构造器的修饰符与所属类的修饰符一致

          

      • 2.定义构造器的格式:权限修饰符  类名(形参列表){}
      • 3.一个类中定义的多个构造器,彼此构成重载

          

      • 4.一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器,若需要默认的空参构造器,必须重写
      • 5.一个类中,至少会有一个构造器
      • 6.父类的构造器不可被子类继承
      • 注意:抽象类中也有构造器,但是,抽象类中的构造器不能实例化,是为了让子类继承时调用

    二、代码块(初始化块)

      1、代码块的格式

      • 代码块如果有修饰的话,只能使用static
      • {} 非静态代码块
      • static{} 静态代码块

        

      2、代码块的作用

      • 对Java类或对象进行初始化

      3、代码块的分类

      • 静态代码块
        • ① 内部可以有输出语句
        • ② 随着类的加载而执行,而且只执行一次。区别静态方法:随着类的加载而加载
        • ③ 作用:初始化类中静态的信息
        • ④ 如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行
        • ⑤态代码块的执行要优先于非静态代码块的执行
        • ⑥ 只能调用静态的属性和方法,不能调用非静态的结构

            

      • 非静态代码块
        • ①内部可以有输出语句
        • ② 随着对象的创建而执行,每创建一个对象,就执行一次非静态代码块
        • ③ 作用:可以在创建对象时,对对象的属性等进行初始化
        • ④ 如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行
        • ⑤ 既可以调用静态的属性和方法,也可以调用非静态的属性和方法

       

      4、属性的赋值顺序

      • 赋值方式:①默认初始化;②显式初始化;③构造器中初始化;④有了对象以后,可以通过"对象.属性"或"对象.方法"的方式,进行赋值;⑤在代码块中赋值
      • 赋值顺序:执行的先后顺序:① - ② / ⑤ - ③ - ④

    三、内部类

      1、内部类的定义

      • Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类
      • Inner class的名字不能与包含它的外部类类名相同

      2、内部类的分类

      • 成员内部类
        • 声明在方法外

           

        • 分为:静态成员内部类和非静态成员内部类
        • 一方面,作为外部类的成员
          • 1、调用外部类的结构:属性、方法等
          • 2、可以被static修饰:此时表示静态成员内部类;此时就不能再使用外层类的非static的成员变量
          • 3、可以被4种不同的权限修饰
        • 另一方面,作为一个类
          • 1、类内可以定义属性、方法、构造器等

              

          • 2、可以被final修饰,表示此类不能被继承。言外之意,不使用final,就可以被继承
          • 3、可以被abstract修饰,表示此类不能被实例化
        • 实例化成员内部类的对象

            

        • 在成员内部类中区分调用外部类的结构

            

      • 局部内部类
        • 声明在方法内、代码块内、构造器内


    • Java8新特征:① 需要显式的声明为final;② java8中可以省略final的声明

       

  • 相关阅读:
    C++ 11 右值引用以及std::move
    poj2299--B
    Linux Socket编程注意事项
    Using Qt to build an Omi App for iOS (and Android)
    openwrt 3g模块上网
    详谈隐藏Tabbar的几种方法
    ZOJ 3529 A Game Between Alice and Bob(博弈论-sg函数)
    uva 10574
    【MySQL案例】HA: GTID_MODE配置不一致
    Swift UIView 层次调整
  • 原文地址:https://www.cnblogs.com/zhufeng123/p/12337769.html
Copyright © 2020-2023  润新知