java-0基础day-006-封装

董卓| 阅读:3111 发表时间:2020-04-13 16:52:37 java
面向对象三大特征:封装,继承,多态
封装:将类的某些信息隐藏在类的内部,不允许外部程序直接访问这些信息,外部只能通过该类提供的特定方法来实现对隐藏信息的操作和访问。

如何实现封装:
1.修改属性的访问权限,设置为private(私有)
2.创建公有public的getter和setter方法
getter:让外部来获取属性的方法
setter:让外部来修改属性的方法
3.setter方法中加入属性控制语句,以确保属性的正确性和合理性。

static修饰符,表示静态修饰符
可以修饰:
1.成员变量
静态变量,可通过类名直接访问
2.成员方法
静态方法,可通过类名直接调用
3.代码块:写在类中,方法之外,并且用{}
包裹起来的一段代码。当程序中访问该类时,自动执行代码块中的语句。

静态代码块,当JVM加载该类时,执行该代码,并且只执行一次。

用static修饰的成员变量也叫做类变量
表示该变量不再属于某个对象了,而是属于该类,所有的对象共享该属性,内存中只有1份。

没有被static修饰的成员变量也叫做实例变量,一个对象对应一个,内存中有N份。

静态方法:
不能直接访问该类的实例属性
可以访问该类的实例化对象的实例属性

不能直接访问该类的实例方法
可以访问该类的实例化对象的实例方法

不能使用this关键字:
this指的是当前的实例对象,而静态关键字描述的是一种共有的信息,不属于任何一个实例对象,属于类,被所有的实例对象所共用,
this表示实例,static表示非实例,所以二者不能兼容。

JVM加载类时,执行了静态代码块,
如果有多个静态代码块,按顺序执行

类的构造方法用于创建类的实例对象,类的
静态代码块用于初始化类,给类的静态变量赋值。

案例1:
使用封装实现电子宠物系统的企鹅类正确输入年龄
保证年龄的有效值(0-10),否则取默认值6

案例2:
模拟实现投票,多个选民进行投票,每个选民只能投一次,并且当投票总数大于100时,停止投票。