zoukankan      html  css  js  c++  java
  • Java基础——代码块、接口与内部类

    初始化块(代码块):类的第四个成员
      1.代码块如果有修饰的话,只能是static
      2.分类:
      2.1静态代码块:

      格式:
      static{

      }
      1.里面可以有输出语句
      2.随着类的加载而加载,而且只被加载一次
      3.多个静态代码块之间按照顺序结构执行
      4.静态代码块的执行要早于非静态代码块
      5.静态的代码块只能执行静态的结构(类属性、类方法)
      2.2非静态代码块:

      格式:
      {

      }
      1.对类的属性(静态的&非静态的)进行初始化操作,同时也可以调用本类声明的方法(静态的&非静态的
      2.里面可以有输出语句
      3.一个类中可以有多个非静态的代码块,多个代码块间按照顺序结构执行
      4.每创建一个类的对象,非静态代码块就加载一次(可加载多次
      5.非静态代码块的执行早于构造器


    属性的赋值顺序

      1.默认初始化
      2.显式初始化 或 代码块初始化(此处两个结构按照顺序执行)
      3.构造器中
      4.通过方法对对象的属性进行修改

    接口:是一个与类并行的概念,是抽象方法常量值定义的集合
      1.是一种特殊的抽象类,是常量和抽象方法的集合,不能包含变量和一般方法
        1)常量 (public static final省去) int i = 12;
        2)抽象方法 (public abstract省去) void method();
          (实现)class SubClass implements InterfaceA{}
      2.接口是没有构造器
      3.接口定义的是一种功能,此功能可以被类所实现(implements InterfaceA)
                      class CC extends DD implements AA{}
      4.实现接口的类,必须要重写其中所有的抽象方法,方可实例化。若此类没有重写所有的抽象方法,则此类仍为一个抽象类
      5.类可以实现多个接口。————Java中的继承是单继承
        class SubClass implements InterfaceA, InterfaceB{}
      6.接口与接口之间也是继承的关系,且可以实现多继承
        Interface InterfaceA extends InterfaceB, InterfaceC {}
      7.接口与具体的实现类之间也存在多态性

    Java中继承的特点:类的继承是单继承,但是可以实现接口,而且可以实现多个接口
    但是接口与接口之间的继承可以是多继承的。


      接口用法总结:
        1.通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。
        2.通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩展功能。
        3.接口主要用来定义规范。解除耦合关系。

      接口的应用:
        1.代理模式:为其他对象提供一种代理以控制对这个对象的访问
        2.工厂方法(FactoryMethod):
      概述:定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。
      适用性:
        1. 当一个类不知道它所必须创建的对象的类的时候
        2. 当一个类希望由它的子类来指定它所创建的对象的时候
        3. 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候
    总结:
    FactoryMethod模式是设计模式中应用最为广泛的模式,在面向对象的编程中,对象的创建工作非常简单,对象的创建时机却很重要。FactoryMethod解决的就是这个问题,它通过面向对象的手法,将所要创建的具体对象的创建工作延迟到了子类,从而提供了一种扩展的策略,较好的解决了这种紧耦合的关系。

    内部类:
      1.在类的内部再定义类,
      2.内部类的分类:成员内部类(声明在类内部且方法外)vs 局部内部类(声明在方法里)
      3.成员内部类特点:
        3.1是外部类的一个成员:1.可以有修饰符(public、protected、private、缺省)2.static, final、static 3.可以调用外部类的属性、方法
        3.2具体类的特点:1.abstract 2.还可以在其内部定义属性、方法、构造器
      4.局部内部类
      5.关于内部类,掌握3点:
        1.如何创建成员内部类的对象
          1.创建静态内部类的对象,可以直接通过外部类调用静态内部类的构造器
            Person.Dog d = new Person.Dog();
          2.创建非静态内部类的对象,必须先创建外部类的对象,通过外部类的对象调用内部类的构造器
            Person p = new Person();
            Person.Bird b = p.new Bird();
        2.如何区分调用外部类、内部类的变量 this.name(哪个类调用的就是哪个类的this),preson.this.name;
        3.局部类的使用

  • 相关阅读:
    ORA-01157:无法标识/锁定数据文件,ORA-01110:表空间丢失错误
    Oracle ORA-01033: ORACLE initialization or shutdown in progress
    mysql delete语句不能用别名
    内存溢出
    中间件-RocketMQ-启动
    rz上传文件乱码
    字节码解读(转~谨用作记录)
    java字节码指令列表(转)
    idea打jar包,提示 jar包中没有主清单属性
    MYSQL 查看最大连接数和修改最大连接数
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/7801150.html
Copyright © 2011-2022 走看看