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

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 final关键字、权限修饰符、内部类、引用类型的介绍,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、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. 修饰符修饰的是”被访问”的权限

 如下表:

修饰符 同类中 同一个包中(子类和无关类) 不同包(子类) 不同包(无关类)
public Y Y Y Y
protected Y Y Y N
默认 Y Y N N
private Y N N N

三、内部类

定义: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 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/130156.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!