类的高级概念

1:类的每一个成(包括成员变量、方法和构造器)都有一个访问修饰符,用来判断谁可以访问该成员
2:java为类中的成员提供了四种访问级别,按照访问权限由大到小排列如下:
(1)公开访问级别:使用public关键字修饰。用public关键字修饰的成员对外公开,即使公开成员可以被任何其他对象访问。
(2)受保护访问级别:使用protected关键字修饰,受保护的成员可以被同一包中的类所访问,还可以被类的子类所访问,不管子类是在哪个包中。
(3)默认访问级别:没有访问修饰符。默认访问级别的成员可以被同一包中的其他类所访问。
(4)私有访问级别:使用private关键字修饰。它是四种访问修饰符中级别最低的。外部的方法是无法访问该组件的

封装的好处

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

static修饰属性

1、现象
用static修饰属性,全类共享一个值。
name这个属性将不再存放在每一个对象身上了,而是全类共享。
无论哪个对象该属性进行了改动,全类所有对象都被改动了。
2原因,static的属性是单独存放在内存中的静态区,而不是存放在每个对象身上的;

3、特殊操作,它可以直接通过类名的方式就可以操作。
这个结果而不是设计static的原因。
注意,能用static修饰的属性其实是极少的。
除非你能真正保证它是 全类共享的一个值,否则是不允许的。
这个name到底什么时候放进内存的呢?
它会在程序运行之前,即加载期的时候就会产生并放入。
使用最多?常量属性可以无脑设计加“static”
public static final 。。。。。;

static修饰方法

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

静态不可以访问非静态

非静态可以访问静态

初始化块

书写位置:
写在属性之后,构造之前。
什么时候调用?
没有方法声明,不知道参数列表,甚至不知道方法名
默认在初始化对象(new对象)被自动调用,每产生一个对象,就被调用一次。
分析
都是代码块,都已经有当前对象,所以凡是可以写在初始化块中的代码,也可以写在构造方法中。
构造方法内部的代码是在实例初始化块之后执行的最终效果以构造为准。
结论:
初始化一个对象要写的代码语句,宁愿写在构造方法里面的。
咋用啦?
本类所以构造方法都要执行的共有代码,可以写在实例初始化块,只能写一次,这个功能跟this()一样。

静态初始化块

(1)能在一个类里面写的第四种东西(属性,初始化块,构造,行为)
书写位置:
写在属性之后,构造之前
(2)什么时候调用?
没有方法声明,不知道参数列表,甚至不知道方法名
默认在类加载的时候被自动调用
由于一个类只加载一(第一次使用的时候)所以这个代码只执行一次。

分析:
1,这是面前我们学的唯一 一个在加载期就能执行的代码。
2,在加载期做事情,消耗的是加载期的时间,不会影响运行期间时间。

结论:
静态初始化块,非常有用!
特别的一些大型项目,一些预先准备

内部类

可以在一个类中定义的第五个部分
内部类分类;
1、成员内部类 2、局部内部类
成员内部类
书写位置;直接写在外部类本身当中,与外部类的属性,构造,行为,初始化块平行。
成员内部类除了定义的位置特殊之外,它仍是一个完整的类。
表现在:
1、可以拥有属性,构造,行为,初始化块,甚至是它的内部类。
2、它是一个独立的类,所以独立的class文件
3、成员内部类可以像属性、行为、初始化块一样,用static修饰--------静态内部类

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值