类的高级概念

JAVA中的四种访问修饰符

1.private

private —私有的

表示被修饰的类、属性、方法只允许由此类的对象调用,而不允许其他类、其他包或者子类访问。

相当于每个人都有自己的私人密码,这个密码是不允许被别人访问的,包括自己的亲人、同学、朋友,可提高安全性级别

2.default

default —当没有写任何修饰符时默认

即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问,不同包或同包的子类均不可访问。

3.protect

介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。

4.public

java中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。即被修饰后允许任何类进行访问,想当于公共用品。

封装的好处

1.类的成员变量可以成为只读或者只写的
2.类可以对存储在其成员变量中的内容有一个整体的控制
3.类的用户不需要知道类是如何存储数据的

static修饰属性

1.现象:用static修饰的属性,全类共享一个值
无论哪个对象对该属性进行改动,全类所有对象都被改动了
2.原因:static的属性是单独存放在内存中的静态区,而不是存放在每个对象身上的,所以它可以直接通过(类名.变量名)的方式操作
3.特殊操作:它可以直接通过(类名.变量名)的方式操作
这是结果而不是设计static的原因
注意:能用static修饰的属性是极少的
除非你能真正保证它是全类共享的一个值,否则是不允许的
使用最多?常量属性可以无脑设计加“static”

static修饰方法

1.现象
(1)可以直接通过类名.方法名的方式操作
(2)static的方法中不能出现super和this
(3)static的方法中不能访问非static的属性行为
2.原因
加载期,会首先加载静态方法和属性,这个时候还没有对象产生
在加载静态方法的时候还不认识非静态的属性或非静态的方法,因此会报错
3.特殊设计
只有工具类的工具方法才能定义为static
如果一个方法不需要执行到对象本身相关的数据或行为的时候,那么这个方法才可以定义为static

实例初始化块

能在类里写的第四种东西(属性、初始化块、构造、行为)
1.书写位置
写在属性之后,构造之前
2.什么时候调用??
默认在初始化对象前被自动调用,每产生一个对象,就被调用一次

分析

1、都是代码块,都已经有当前对象,所以凡是可以写在初始块中的代码都可以写在构造方法中
2、构造方法内部的代码是在实例化初始化块之后执行的,最终效果以构造为准

静态初始化块

1.书写位置
写在属性之后,构造之前
2.什么时候调用??
默认在类加载时被自动调用,一个类只加载一次(第一次使用),所以这个代码只执行一次

分析

1、这是目前我们学的唯一一个在加载器就能执行的代码
2、在加载期做事情,消耗的是加载期的时间,不会影响运行期时间
结论:
静态初始化块非常有用!

内部类

可以在一个类当中定义的第五部分
内部类分类:1、成员内部类 2、局部内部类

成员内部类

书写位置:直接写在外部类本身当中,与外部类的属性,构造,行为,初始化块平行
成员内部类除了定义的位置特殊之外,它仍是一个完整的类
表现在:
1、可以拥有属性,构造,行为,初始化块,甚至是它的内部类
2、它是一个独立的类,所以有独立的class文件
3、成员内部类可以像属性、行为、初始化块一样,用static修饰—静态内部类
1、class文件的个数与Java文件个数无关,与类的个数有关
2、class文件的名字与Java文件的名字无关,而与类的类名有关
3、如果类是public的,它的名字必须和java文件名一致,一个Java文件只能有一个公共类
命名规则:
外部类类名$内部类类名.class

局部内部类

书写位置:是定义在外部类某个方法里面的
局部内部类除了定义的位置特殊以外,它们是一个完整的类
局部内部类有一种特例,叫匿名内部类
命名:外部类类名$数字内部类类名.class

匿名内部类

没有类名它是在new对象的同时给出类的定义,所以只能产生一个对象,用这一次

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值