Java修饰符

权限修饰符

权限修饰符分为以下四类:

public                公共的                使用范围:本类        同包     子类

protected          受保护的            使用范围:本类         同包     子类(通过子类对象在子类范围内部访问)       

默认不写           默认的               使用范围:本类         同包

private              私有的                使用范围:本类

权限修饰符用来修饰的时候只能用public和默认不写这两种方式,修饰类成员(即属性、方法、构造函数)时,都可以用;

 

特征修饰符

 

final                  最终的,不可更改的

修饰变量: 如果在定义变量时没有赋初始值,则给变量一次机会更改值。此后无法改动      

修饰属性: 必须给属性赋一个初始值,否则编译报错。赋值后不可改动。

                   如果修饰的是引用数据类型,则变量内的地址引用不让更改,但是地址引用中存的可以随意改变。

修饰类本身:此类无法被继承(通常是一些定义好的工具类)

修饰方法:方法是最终的方法,不可更改;final修饰的方法不可以被子类覆盖(重写)

 

static 静态的

(1)可以修饰:修饰属性;修饰方法;修饰程序块:修饰类(内部类)

(2)特点:

对于这些特点,结合类的加载顺序就能够更好的理解了。https://blog.csdn.net/monologuezjp/article/details/99408114。

a.静态元素在类加载时就初始化了,创建非常早;

静态元素的初始化在任何类成员前面,只有当类中的所有静态成员加载完成后才会加载非静态成员。

b.静态元素存储在静态元素区中,每一个类有一个自己的区域,与别的类不冲突;

c.静态元素只加载一次,全部类对象及类本身共享;//例子:单例模式https://blog.csdn.net/monologuezjp/article/details/99409814

d.由于静态元素区加载的时候,有可能没有创建对象,可以通过类名字直接访问。

e.可以理解为静态元素不属于任何一个对象,属于类的。

 

 

 

f.静态元素区GC无法管理,可以粗暴的认为常驻内存。(栈内存创建开始用完即回收,堆内存通过GC(垃圾回收器)回收。)

g.非静态成员(堆内存对象里)中可以访问静态成员(静态区)

h.在静态成员中可以访问静态成员(因为两个都存在静态区里)

i.在静态成员中不可以访问非静态成员(因为静态成员创建的比非静态成员中早,可能访问不到非静态成员)

j.静态元素中不可以出现this或super关键字(静态元素属于类)

 

Abstract            抽象的

(用来描述事物,很不具体,没有具体的执行,只是个概念)

  1. 能修饰什么:修饰方法、类
  2. 修饰后的特点:

用abstract修饰的方法,只有方法的结构,没有方法的执行体。

抽象类中不一定有抽象方法;但抽象方法必须放在抽象类中或接口中。

抽象类有什么特点?

(1)抽象列含有构造方法,但是我们不能通过调用构造方法直接创建对象;

  • 抽象类只能通过子类单继承来做事;
  • 抽象类可以继承抽象类;
  • 抽象类可以单继承具体类,但是一般不会出现。
  • 具体类直接单继承一个抽象类----->不可以(必须将父类抽象方法具体化,或者子类也变成抽象类)
  • 抽象类中可以全是具体成员;可以全是抽象方法(这时叫接口);
  • 接口可以理解为是抽象类抽象到极致,还是一个类的结构,但是不能用class修饰,改用interface修饰

 

什么是接口

(通常是为了定义规则)?

  • 有什么成员:

属性:     不能含有一般属性,只能含有公有的静态的常量(即所含属性必须为静态元素且必须赋值)

方法:     不能含有一般方法 只能含有公有的抽象方法(但是JDK1.8版本之后可以用default修饰具体方法)

块:         不能有块

构造方法: 不能含有构造函数

 

  • 如何使用 :

不能创建对象;

只能通过子类实现来做事,可以多实现(implements)

Public void A implements b,c,d{

}

      注意:

接口不能继承别的类;

抽象类可以直接(多)实现接口;

具体类不可以直接多实现接口,必须将接口中的抽象方法具体化,或者自己变成抽象类

*接口可以多继承接口   可以直接多实现

如图:接口(I)、抽象类(A)、具体类(C)之间的关系

 

 

native 本地的

在Java源代码中看到native,就表示看不到后续代码了;后续会调用其他编程语言执行内存操作。

例如Object类中的hashCode方法,就是native修饰的,该方法后续就是调用C/C++写的底层代码,而这个代码我们是看不见的。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值