面向对象进阶

一、成员变量

成员变量的概述
Java中的成员变量分为类属性和实例属性两种,类属性的作用域与该类的生命周期相同,而实例属性则从类的实例被创建起开始存在,直到系统销毁该实例,实例属性的作用域与其对应的实例的生命周期相同。
成员变量的使用
成员变量在使用之前,需要先声明,声明成员变量是在类的内部、方法的外部定义的变量,成员变量分为实例变量和类变量。实例变量作用域是当前所属实例的范围,类的成员变量的作用域是整个类范围。成员变量的声明给出变量名、变量类型以及其他特性,其语法如下:

[<修饰符>][static][final]<变量类型><变量名>

(1)static:表示一个类的成员变量,即静态成员变量。 (2)final:表示一个常量。

this关键字

Java了一个this关键字,this关键字总是指向调用该方法的对象。
方法中调用方法或成员变量
this关键字最大的作用就是让类中的一个方法访问该类中的另一个方法或实例成员变量。
解决实例变量与局部变量同名的问题
大多数情况下,在方法中访问类中的实例成员变量无须使用this前缀,如果方法中的,一个局部变量的实例变量同名,但程序又需要在该方法中访问实例变量,则必须使用this前缀。

二、隐藏和封装

封装的概念
封装是面向对象的三大特征之一,它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法实现对内部信息的操作和访问。
封装是面向对象编程语言对客观世界的模拟,客观世界中的属性均被隐藏在对象内部,外界无法直接操作和修改,如人的年龄属性只能随着岁月的流逝而增加,通常不能随意修改人的年龄。对一个类或对象实现良好的封装,可以实现以下目的:

(1)隐藏类的实现细节、
(2)让使用者只能通过事先预定的方法访问数据,从而可以在该方法中加入控制逻辑,限制对属性的不合理访问。
(3)可进行数据检查,从而有利于对象信息的完整性。
(4)便于修改,提高代码的可维护性。

实现良好的封装,需要从以下两个方面考虑:
(1)隐藏对象的属性和实现细节,不允许外部直接访问。
(2)暴露出方法,让方法控制对这些属性进行安全访问和操作。

因此,封装实际上有两个方面的含义:隐藏该隐藏的,暴露该暴露的。这两个方面都需要通过使用Java提供的访问控制符来实现.
使用访问控制符

private只是Java访问修饰控制符的一种,除private外,Java还提供了default、protected、和public。Java访问控制级别从小到大,如下:在这里插入图片描述
各访问权限的级别表如下:在这里插入图片描述
通过上述关于访问控制符的介绍,可知访问控制符用于控制一个类的成员是否可以被其他类访问。对于局部变量而言,其作用域就是其所在的方法,因此不可能被其他类访问,因此不能使用访问控制符修饰。

三、static关键字

java类的运行包括类加载和实例化两个阶段,当一个类被加载至JVM中,静态成员会被初始化,被static修饰的成员即为静态成员,静态成员包括静态代码块,静态属性和静态方法。静态成员不属于某个对象,仅属于静态成员所在的类。
静态成员变量
类的成员变量包含静态变量和实例变量。静态成员变量是被static关键字修饰的成员变量,静态成员变量属于其所在类,被类中的所有实例共享,静态成员可通过类直接访问,也可以直接通过类的实例访问。
静态变量和实例变量的区别包括以下两点:
(1)静态变量共享一块内存空间,在类加载过程中完成静态变量的内存分配即初始化,可以使用类直接访问静态成员变量。
(2)每创建一个实例,都会在堆内存中为其创建一块内存空间,每一个实例含有一个属于自身的实例属性。
静态方法
被static修饰的方法称为静态方法。静态方法也可通过类名直接访问。在使用静态方式时需要注意,静态方式中不能访问非静态的成员,如实例属性、实例方法。
静态方法通常作为工具方法,不会因为实例的不同而影响方法最终的执行效果。
静态代码块
静态方法在类加载后,虽然在内存中已经分配了内存空间,但只有显式地调用静态方法时,该方法才会被执行。
如果需要在类加载时执行某一操作,则可以使用静态代码块。静态代码块。静态代码块不存在任何方法体中,它在Java虚拟机加载类被执行。如果类中包含多个静态代码块,则Java虚拟机按照他们在类中出现的顺序依次执行,且每个静态代码块只会被执行一次。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值