Java笔记(9)修饰符和内部类

Java笔记:修饰符与内部类

修饰符

Java根据修饰符的不同特点,将修饰符分为了:权限修饰符、状态修饰符、抽象修饰符;
权限修饰符:private(私有的)、public(公共的,最高权限)、默认(不加任何权限修饰符)、protected(受保护的访问控制)

状态修饰符:static(静态的)、final(最终的)

抽象修饰符:abstract(抽象的)

对于类、方法、变量修饰时:
1.修饰类时:如果直接加public时,代表这个类是公共类,可以被任意对象使用;如果不加public,就代表是默认权限修饰,只能被同一包下的对象使用;
外部类一般只有这两种权限修饰符,其他的权限修饰符不能修饰外部类,但是一个类的内部类可以使用其他的权限修饰符,这时内部类相当于类中的一个成员;
外部类还可以被抽象修饰符abstract和final修饰,final修饰的类将不能被继承;

2.修饰方法时:
  private:只能自己类中的其他成员访问,其他类包括子类也不能访问该方法;
  public:可以被所有的类的成员访问;
  proctecd:指定只有当前类和当前类的子类可以访问该方法;
  final:最终方法,不能被修改其中的功能,即不能被重写;
  static:静态方法,属于类方法,可不实例化对象直接访问,但静态方法只能访问静态成员;
  nctive:本地方法控制符,为了提高程序的运行速度,需要用其它的高级语言书写程序的方法体,那么该方法可定义为本地方法用修饰符 native 来修饰。
  synchronized:同步方法控制符,常用于多线程中需要同步和协调的方法上修饰,也称为同步锁;

**3.修饰变量时:
public:(公共访问权限控制符),指定该变量为公共的,他可以被任何对象的方法访问。
private(私有访问权限控制符)指定该变量只允许自己的类的方法访问,其他任何类(包括子类)中的方法均不能访问。
protected(保护访问权限控制符)指定该变量可以别被自己的类和子类访问。在子类中可以覆盖此变量。
friendly ,在同一个包下的类可以访问,其他包中的类不能访问。
final,最终状态修饰符,指定此变量的值不能改变,常用于定义类的常量。
static(静态修饰符)指定变量被所有对象共享,即所有实例都可以使用该变量。变量属于这个类,不属于该类的某个实例对象。
transient(过度修饰符)指定该变量是系统保留,暂无特别作用的临时性变量。
volatile(易失修饰符)指定该变量可以同时被几个线程控制和修改。
**

内部类

把一个类定义在一个类中,称为内部类,有两个分类,成员内部类和局部内部类。
内部类的访问规则:可以直接访问外部类中的成员,包括私有的,而外部类想要访问内部类的成员,则需要创建对象;

成员内部类:直接定义在类的成员位置上的类称为成员内部类,成员内部类可以用private和static修饰,private修饰可以保证内部类数据的安全性,使得被修饰的内部类只能被它所属的外部类访问;
static修饰的内部类称为静态内部类,静态内部类可直接通过外部类名.内部类名()形式创建对象,在直属外部类里可以直接new 内部类名的方式创建;静态内部类可直接调用直属外部类的静态变量和成员(构造方法也可以访问,可以看为特殊的静态方法),非静态成员需要创建实例调用;

局部内部类: 一般定义在一个外部类方法或作用域中的类称为局部内部类,它的访问权限仅限于方法内或域中,局部内部类访问局部变量时在jdk8以前必须要给局部变量加final,否则会报错,jdk8以后编译器优化可以不用加,要加final的原因是内部类对象的生命周期要比局部变量的生命周期长,如果不给局部变量加final,那么这个变量就会随方法出栈而消失,从而造成内部类对象访问局部变量时的错误,因此编译器会报错,加了final后,内部类对象再访问该变量时,其实质是直接访问了这个存在堆内存常量池里的值;

匿名内部类: 与继承合并没有名字的内部类,前提是有该类或者接口。它没有构造器,大部分用于继承其他类或实现接口,只需要对继承的方法实现或重写即可;
它的使用格式:new 匿名内部类(){
  实现或重写方法;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值