面向对象三特性:
-------------------------在控制台输出人员信息--------------------
封装:
定义:
封装的实质就是将类的状态信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的访问。
目的:
封装主要是为了解决安全问题,有效避免了外部错误对对象造成的影响,并能对对操作的错误起到提示和预防的作用,同时也实现了松耦合的关系。
封装的步骤:
1、修改属性的可见性:将属性前面private
2、设置getter/setter()方法:IDEA中是ALT+INSERT键
3、设置属性的存取限制:需要在setter方法中进一步利用条件判断语句进行赋值限制
提供对外的输入输出接口(setter,getter,构造方法)
备注:构造方法也要调用setter来实现封装
------------------------------使用包改进信息输出--------------------------
包的概述:
包也是封装的一种形式
包的作用:
1、包允许将类组合成较小的单元(类似文件夹),易于找到和使用相应的类文件。
2、防止命名冲突,不同包中的类可以重名。
3、包允许在更广的范围内保护类、数据和方法。
包的定义:
命名规则:package 包名;
1、package是关键字,而且包名必须全小写,不能圆点开头和结尾。
2、包名必须是java文件中第一条非注释性语句,而且一个源文件只能有一个包声明语句。
包的使用:
//将Person类放入pack1包中
package cn.kgc.pack1; //表示这个类在哪个包,用于声明当前类所在的包
public class Person{
//
}
//将PersonTest类放入pack2包中
//使用Person类时,需要使用import将其导入 import :用于导入当前类所引用的类,后面跟的路径就是全类名,正常跟在package的下一行
package cn.kgc.pack2;
import cn.kgc.pack1.Person;
public class PersonTest{
//
}
-------------------------------使用访问修饰符----------------------------
类和类成员的访问控制:
1、类的访问修饰符
public:全工程可见,范围最大
默认:包级私有,统一个包里是所有类可见
private:只有本类可见
protect:包级私有+子类可见
2、static关键字
定义:
1、一个类可以创建n个对象,如果n个对象中某些数据需要共用,就需要使用static关键字修饰这些数据。
2、java中调用类的成员一般先需要创建类的对象,然后通过对象进行调用。使用static关键字可以实现通过类名“.”直接调用类的成员,不需要创建类的对象。
3、使用static修饰的属性和方法属于类,不属于某个具体的对象。
1、用static关键字修饰属性
用static修饰的属性称为静态变量或者类变量,不属于任何对象,没有使用static修饰的属性称为实例变量。
static关键字:没有static关键字的可以认为是对象的,有static的可以认为是类的。
加static的属性叫类属性:全局变量,不论哪个对象或者整个类型来改变属性的值,都会对其他对象/整个类造成影响。
代码实现:
public class Person {
public static String name;
public static int PERSON_LIVE;
public static void show(){
System.out.println("姓名是:"+name+",生命只有"+PERSON_LIVE+"次");
}
}
public class Text {
public static void main(String[] args) {
Person hanbing=new Person();
hanbing.name="韩冰";
Person.PERSON_LIVE=1;
Person.show();
}
}
2、用static关键字修饰方法
加static的方法叫类方法:全局方法,一般用于定义工具方法,不用创建对象,直接加类名就可以调用
普通方法(对象方法)和静态方法(类方法)的区别
对象方法可以直接调用对象属性和对象方法以及静态属性和静态方法
静态方法可以调用静态属性和静态方法,但不能调用对象属性和对象方法
3、静态代码块:
static{
//代码块
}
只会在第一次访问该类时,执行一次,用于初始化环境,优先级非常之高
同一个类共享静态变量的地址
使用类名.静态变量