JAVA基础学习总结,day11(final、权限修饰符、内部类、枚举)

final: 终态的意思 不可变

可以修饰成员变量、成员方法

修饰类:

          格式:
               public final class 类名{
               }
          例子:public final class stringfinal修饰的类,不能被继承,但是该类可以继承别的类

     修饰方法:
          格式:
               修饰符 final 返回值类型 方法名(参数类型 参数名,..){
               }
             被final修饰的方法不能被重写

修饰变量:

  • 局部变量:被final修饰的变量会变成一个常量,只能赋值一次
    格式:
    • final 数据类型 变量名 = 值;
    • final 数据类型 变量名;变量名 = 值;
  • 成员变量:被final修饰的成员变量会变成一个常量,只能赋值一次
    • 显示赋值:final 数据类型 变量名 = 值;
    • 构造方法赋值:必须保证所有构造方法都会给该常量赋值
    • 常量规范:一般常量名都是全部大写

权限修饰符:

  • public:公共的(整个项目)
  • protected:受保护的(本类和子类)
  • default:默认的(同一个包)
  • private:私有的 (本类)

publIc > protected > default > private
public 具有最大权限,private则是最小权限

编写代码时,如果没有特殊考虑,建议这样使用权限:

  • 成员变量使用private,隐藏细节
  • 构造方法使用public,方便创建对象
  • 成员方法使用public,方便调用方法
  • 不加权限修饰符,其访问能力与default修饰符相同

内部类:
概述:类A中包含B 类A就是外部类 类B就是内部类
成员内部类:定义在类中方法外的类

格式:
              public class 外部类名{
                  public class 内部类名{

                   } 
              }

访问特点:

  • 内部类可以直接访问外部类的成员,包括私有成员
  • 外部类要访问内部类的成员,必须要建立内部类的对象

创建内部类对象的格式:

  • 外部类名.内部类名 对象名 = new 外部类名().new 内部类名()
  • 内部类访问外部类中的成员变量
  • 外部类名.this.变量名

内部类仍是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和&符合
比如:Person$Heart.class

匿名内部类(重点)

本质:继承了一个类的子类(实现了一个接口的实现类) 的匿名对象
继承了一个类的匿名子类的对象
匿名内部类必须继承一个父类或者实现一个父接口。
匿名内部类可以作为抽象类的匿名对象,也可以作为接口的匿名对象

格式:
new 类名\接口名(){
实现抽象方法
};

例如:new Animal(){
              @Override
                 public void eat(){
                     System.out.println("匿名内部类的eat方法"); 
                 }
            };

引用类型用法的总结:
       数组作为方法的参数
       数组作为方法的返回值
       数组作为类的成员变量

       类作为方法的参数
       类作为方法的返回值
       类作为类的成员变量
       
       接口作为方法的参数  可以接收该接口的所有实现类的对象
       接口作为方法的返回值 可以返回改接口的所有实现类的值
       接口作为类的成员变量

       String[] arr;//成员变量 数组作为类的成员变量

       String name;//类作为类的成员变量
       
       A a;//接口作为类的成员变量
        public static void main(String[] args){
}
       

枚举:enumeration
概述:枚举也是一种引用数据类型
作用:其实就是用来储存固定的值

     格式:
            public enum 枚举名{
                    枚举值1,
                    枚举值2,
                    枚举值3...
               }
     使用:枚举名.枚举值

你可能感兴趣的:(java基础)