Java 类的高级概念

类的高级概念

访问修饰符:用来修饰定义类中的属性和行为可以被其他人访问的修饰符号.


                                                  同包             不同包
                                 本类    子类   非子类     子类   非子类

private    私有的           1        0           0             0        0       只能本类访问
         
default    本包               1        1           1             0        0       跟类同一个包下面的所有类,都可以访问

protected  受保护的     1        1           1             1        0       同包中的类和其他包中的子类,都可以访问

punle     公共的            1        1           1             1        1       任何包中的类,都可以访问

公开访问级别:使用public关键字修饰。用public关键字修饰的成员对外公开,即公开成员可以被任何其它对象访问。

受保护访问级别:使用protected关键字修饰。受保护的成员可以被同一包中的类所访问,还可以被类的子类所访问,不管子类是在哪个包中。

默认访问级别:没有访问修饰符。默认访问级别的成员可以被同一包中的其它类所访问。

私有访问级别:使用private关键字修饰。它是四种访问修饰符中级别最低的。私有成员只有类本身可以访问,不对外公开。
   
访问级别:  private --> default --> protected --> punle 


封装

继承、封装、多杰、抽象是面向对象编程的四大基本概念。

访问修饰符的作用是限制属性和方法被使用和调用的范围。即指明了类的数据成员和方法的能够被访问的程度。

如果一个类的组件(数据成员或方法)被声明为私有类型( private ) ,则任何该类外部的方法是无法访问该组件的。

用get命名访问器方法和set命名修改器方法

封装:

1,组装:是OOP的四大特征之一

2,隐藏: (1)访问修饰符

1,访问修饰符的作用是限制属性和方法被使用和调用的范围。即指明了类的数据成员和方法的能够被访问的程度。

2,如果一个类的组件(数据成员或方法)被声明为私有类型(private ),则任何该类外部的方法是无法访问该组件的。


封装的好处

1、类的成员变量可以成为只读或者只写的。可以成为只读或者是只写,不再是外部可以任意操作,
例如, SalesPerson类中的成员变量id是只读的,在 SalesPerson对象实例化后, id成员变量就无法改变了。

2、类可以对存储在其成员变量中的内容有一个整体的控制。
完成对成员变量的内容的整体控制,比如:口令(天王盖地虎) ,年龄控制,大小控制....
例如, SalesPerson类中的成员变量 commissionRate的值只能在0.0和0.20之间。

3、类的用户不需要知道类是如何存储数据的。从而让类的调用不能轻易的,凭借经验就判断出类的成员变量,
类可以改变一个成员变量的数据类型,而类的用户不需要改变其代码.

static可选的修饰符:

在修饰全局变量时,全局变量可以被称为静态变量,或者类变量,经过static修饰的全局变量,已经与对象无关,直接上升为类的变量它的数据已经不存在每个单独的对象身上,而是存在方法区中的数据块的静态区域中,非静态成员变量,必须要等待实例化对象之后,才可以调用,而静态成员变量,在类加载完成之后,就可以直接调用。

,在修饰方法的时,对应的方法可以被称为类方法,跟类变量一样,同样与对象已经无关, 直接上升为类的行为,非静态方法,必须要等到实例化对象之后,才可以调用,而静态方法,在类加载之后,就可以直接调用。


static修饰的内容存在于内存的时机是:类加载的时候!

static的适用场景:
static在修饰全局变量时,一般用于修饰常量,主要目的:节约堆内存,将变量定义在静态区域中,而不是每个对象的自身.
static在修饰方法时,一般用于修饰工具类的工具方法,比如: Math类, Arrays类, StringUtils类,包括超级数组类.


静态方法中不能访问非静态成员(属性,也指方法) 其原因是:

1、静态方法在加载时,非静态属性,方法压根就还没有调用.

2、假设可以调用,那么如果存在成千上万个对象,我在调用谁的属性,或者是调用谁的行为?

static无法修饰构造函数,因为static修饰的属性,或行为都与对象无关,但是构造是专门产生对象的.


静态初始化块:实例化初始块、静态初始化.

实例初始化块:主要用于初始化成员变量,一般是对象实例化时,才会执行,并且是实例一次,执行一次。它执行在构造函数执行代码的第3步到第4步之间。
当然可以使用有参构造,代替初始化块.

静态初始化块:主要用于在类加载时,做一些前期的准备工作,比如:检杳数据库连接是否正常,检查配置文件是否存在,或者提前读取某些文件内容到内存...
它的执行,是在类加载时,就开始执行。

猜你喜欢

转载自blog.csdn.net/x954147048/article/details/82422486
今日推荐