final关键字、权限修饰符、内部类、引用类型的介绍

一、final关键字

1.1final关键字

定义:Final用于修饰类、成员变量和成员方法。

final修饰的类,不能被继承(String、StringBuilder、StringBuffer、Math,不可变类),其中所有的方法都不能被重写(需要注意的是不能被重写,但是可以被重载),所以不能同时用abstract和final修饰类(abstract修饰的类是抽象类,抽象类是用于被子类继承的,和final起相反的作用);

Final修饰的方法不能被重写,但是子类可以用父类中final修饰的方法;Final修饰的成员变量是不可变的,如果成员变量是基本数据类型,初始化之后成员变量的值不能被改变,如果成员变量是引用类型,那么它只能指向初始化时指向的那个对象,不能再指向别的对象,但是对象当中的内容是允许改变的。

修饰类

格式:

final class 类名{
 
}


查询APl发现像 public final class string 、 public final class Math 、 public final class Scanner等,很多我们学习过的类,都是被fal修饰的,目的就是供我们使用,而不让我们所以改变其内容。

final关键字的好处

final关键字提高了性能。JVM和Java应用都会缓存final变量。

final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。

关于final的重要知识点

final关键字可以用于成员变量、本地变量、方法以及类。

final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误。

不能够对final变量再次赋值。

本地变量必须在声明时赋值。

在匿名类中所有变量都必须是final变量。

final方法不能被重写。

final类不能被继承。

二、权限修饰符:

2.1 状态修饰符:

static

  • 静态的意思,可以修饰成员变量,成员方法,不能修饰类,不能修饰构造方法
  • 被修饰的变量,方法可以通过类名进行调用

final

  • 最终的意思,可以修饰类,成员变量,成员方法,不能修饰构造方法
  • 修饰的类不能被继承,被修饰的变量是常量,被修饰的方法不能被继承

2.2抽象修饰符:

abstract

  • 抽象的意思,不能修饰构造方法,不能修饰成员变量,可以修饰类,成员方法
  • 被修饰的类不能被实例化,只能被继承,被修饰的成员方法在子类中必须被重写

2.3 四个权限修饰符:

public:(公共权限)

  • 可以修饰类,成员变量,成员方法
  • 被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符

protected:(受保护权限)

  • 可以修饰成员变量,成员方法,构造方法,不能修饰类(外部类,内部类不考虑)
  • 被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。
  • 如果有不同包的类想调用它们,那么这个类必须是定义它们的类的子类。

default(默认权限)

  • 类,成员变量,成员方法,构造方法都能使用默认权限,即不写任何关键字
  • 默认权限即同包权限,同包权限的元素只能在定义它们的类中使用,以及同包的类中被调用

private:(私有权限)

  • 可以修饰成员变量,构造方法,成员方法,不能修饰类(外部类,内部类不考虑)
  • 被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。

注意:

1. 并不是每个修饰符都可以修饰类(指外部类),只有public和default可以。
2. 所有修饰符都可以修饰数据成员,方法成员,构造方法。
3.为了代码安全起见,修饰符不要尽量使用权限大的,而是适用即可。比如,成员变量,如果没有特殊需要,尽可能用private.

4. 修饰符修饰的是”被访问”的权限

 如下表:

修饰符同类中同一个包中(子类和无关类)不同包(子类)不同包(无关类)
publicYYYY
protectedYYYN
默认YYNN
privateYNNN

三、内部类

定义:Java 一个类中可以嵌套另外一个类称为内部类。

语法格式如下:

class OuterClass {   // 外部类
    // ...
    class NestedClass { // 嵌套类,或称为内部类
        // ...
    }
}

匿名内部类

定义:是内部类的简化写法。它的本质是一个 带具体实现的 父类或者父接口的 图名的 子类对象开发中,最常用到的内部类就是匿名内部类了。以接口举例,当你使用一个接口时,有如下几步操作:

1.定义子类
2.重写接口中的方法
3.创建子类对象
4.调用重写后的方法

匿名内部类必须继承一个父类或者实现一个父接口

格式

  new 父类名或者接口名(){
  // 方法重写
 @Override
  public void method() {
        // 执行语句
   }
};
 

 四、引用数据类型

4.1引用数据类型

定义: 变量名不是指向具体的数值 , 而是指向存数据的内存地址 。

4.2引用数据类型分3种:类,接口,数组;
4.2.1. 类Class引用 :
Object :Object是一个很重要的类,Object是类层次结构的根类,每个类都使用Object作为超类,所有对象(包括数组)都实现这个类的方法。用Object可以定义所有的类 如:

Object object= new Integer(1); //来定义一个Interger类 
Integer i=(Integer) object;  //在来把这个Object强制转换成Interger类 

String :String类代表字符串,Java 程序中的所有字符串字面值(如"abc")都作为此类的实例来实现。检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本、在该副本中、所有的字符都被转换为大写或小写形式。 


Date :Date表示特定的瞬间,精确到毫秒。Date的类一般现在都被Calendar 和GregorianCalendar所有代替 


Void :Void 类是一个不可实例化的占位符类,它保持一个对代表 Java 关键字 void 的 Class 对象的引用。 


同时也有对应的Class如:int-Integer  long-Long boolean-Boolean  byte-Byte  char-Character  double-Double  float-Float   short-Short 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值