面向对象进阶
一、类的成员变量和类变量的区别
在java中,变量可以分为成员变量和局部变量,成员变量是在类范围内定义的变量,局部变量是在方法中定义的变量。
成员变量中分为实例属性和类属性。
static 类属性,属于共享使用,类似于提交作业的服务器。
实例:测试英雄对象中成员的赋值与引用
二、This关键字
java提供了一个this关键字,this关键字总是指向调用该方法的对象。
示例:测试在方法中使用this关键字引用成员变量和成员方法
总结:
1、this关键字代表自身
2、this关键字主要用途
-
用this代表自身类的对象(直接使用this、使用this引用成员变量、使用this调用成员方法)。
-
用this在自身的构造方法内部调用其他的构造方法。
三、封装
封装是面向对象的三大特性之一。
封装将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法实现对内部信息的操作和访问。
封装是面向对像编程语言对客观世界的模拟,客观世界中的属性均被隐藏在对象内部,外界无法直接操作和修改。
示例:利用封装隐藏英雄属性以及暴露属性赋值和更新的方法
访问控制级别图:
Java访问控制级别表:
访问修饰符 | 同一个类中 | 同一个包中 | 子类中 | 所有类中 |
private | √ | — | — | — |
default | √ | √ | — | — |
protected | √ | √ | √ | — |
public | √ | √ | √ | √ |
总结:
Java封装的实质:使用访问控制符private隐藏属性,以及public暴露方法。
四、static关键字
Static修饰的成员即静态成员,静态成员包括静态代码块、静态属性和静态方法。
静态成员不属于某个对象,仅属于静态成员所在的类。
示例:模拟个人银行账户取款10次(静态方法)
总结:所有的静态成员变量都可以通过类名直接访问。
示例:定义一个计算平方的静态方法
示例:静态代码块程序演示