[Day13]static、final、匿名对象、内部类、包、修饰符、代码块

1、final-最终

  (1)final的特点

    final修饰类不可以被继承,但是可以继承其他类

    final修饰的方法不可以被覆盖,但父类中没有final修饰方法,子类覆盖后可以加final

    final修饰的变量称为常量,这些变量只能赋值一次

    引用类型的变量值为对象地址值,地址值不能更改,但是地址内的对象属性可以修改

    修改成员变量,需要对创建对象前赋值,否则报错。

2、static-静态,不创建对象就可以调用方法

  (1)static特点

    被static修饰的成员变量属于类,不属于这个类的对象

    被static修饰的成员可以并且建议通过类名直接调用方法

  (2)static注意事项

    静态内容是优先于对象存在,只能访问静态,不能使用super/this

    同一个类中,静态成员只能访问静态成员

    main方法为静态方法仅仅为程序执行入口,它不属于任何一个对象,可以定义在任意类中

  (3)定义静态常量

    格式:public static final 数据类型 变量名=值;

    接口中的每个成员变量都默认使用 public static final 修饰

    所有接口中的成员变量已是静态常量,由于接口没有构造方法, 所以必须显示赋值。可以直接用接口访问

3.匿名对象-创建对象时,只有创建对象的语句,却没有把对象地址赋值给某个变量

  (1)匿名对象的特点

    创建匿名对象值直接使用,没有变量名

    匿名对象在没有指定其引用变量时,只能使用一次

    匿名对象可以作为方法接收的参数、方法返回值使用

4、内部类-将类写在其他类的内部

  (1)什么时候使用

    在描述事物时,若一个事物内部还包含其他可能包含的事物

  (2)分类

    成员内部类:定义在外部类的成员位置,可以通过外部类对象进行方法

    访问方式:外部类名.内部类名 变量名=new 外部类名().new 内部类名();

    局部内部类:定义在外部类中的局部位置

    访问方式:在外部类方法中,创建内部类对象,进行访问

5、匿名内部类

  (1)两个含义

    临时定义某一指定类型的子类

    定义后即刻创建刚刚定义的这个子类的对象

  (2)匿名内部类是创建某个类型子类对象的快捷方式

    格式:

      new 父类或接口(){

        //进行方法重写

      };

    使用匿名对象的方式,将定义子类与创建子类对象两个步骤由一个格式一次完成

6、包的声明与访问

   (1)分包管理:当类文件很多的时候,通常用多个包进行存放管理

   (2)包的声明格式: package 包名.包名.包名...;

   (3)声明包的语句,必须写在程序有效代码的第一行

   (4)包的访问:带有包的类,创建对象格式:包名.类名 变量名=new 包名.类名();

   (5)import导包

7、访问修饰符

  (1)要想仅能在本类中访问使用private修饰

  (2)要想本包中的类都可以访问不加修饰符即可

  (3)要想本包中的类与其他包中的子类可以访问使用protected修饰

  (4)要想所有包中的所有类都可以访问使用public修饰

8、代码块

  (1)局部代码块:定义在方法或语句中

    以{}划分的代码区域

    方法和类都是以代码块的方式划定边界的

  (2)构造代码块:定义在类中成员位置的代码块

    优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作

    每创建一个对象均会执行一次构造代码块

  (3)静态代码块:定义在成员位置,使用static修饰的代码块

    当以任意形式第一次使用到该类时执行,它优先于主方法执行、优先于构造代码块执行

    该类不管创建多少对象,静态代码块只执行一次

    可用于给静态变量赋值,用来给类进行初始化

原文地址:https://www.cnblogs.com/ERFishing/p/10564978.html