封装与隐藏
封装的作用:
高内聚:类的内部数据操作细节自己完成,不允许外部干涉。
低耦合:仅对外暴露少量的方法用于使用。
封装的含义:
隐藏对象内部的复杂性,只对外公开简单的接口。
便于外界调用,从而提高系统的可扩展性、可维护性。
说明:
1)避免使用"对象.属性"的方式对属性进行赋值。
2)需要将属性声明为私有的(private),通过方法对属性赋值。此时,对于属性就体现了封装性。
封装的实现:
1)将类的属性xxx私有化private
2)提供公共的public方法来获取和设置此属性的值
// 定义属性
private double radius;
// set方法 : 设置属性的值
public void setRadius(double radius){
this.radius = radius;
}
// get 方法 : 获取属性的值
public double getRadius(){
return radius;
}
说明
体现一:不对外暴露私有属性。
体现二:单例模式(将构造器私有化)
体现三:如果不希望类在包外被调用,可以将类设置为缺省的。
权限修饰符
Java规定的四种权限修饰符
权限从小到大顺序为:
private < 缺省default < protected < public
修饰符的修饰范围
修饰符 | 类内部 | 同一个包 | 不同包的子类 | 同一个工程 |
private | Yes | |||
缺省 | Yes | Yes | ||
protected | Yes | Yes | Yes | |
public | Yes | Yes | Yes | Yes |
修饰的结构说明:
1)修饰属性、方法、构造器、内部类。四种权限都可以
2)修饰类class的话,只能使用:缺省、public
封装类
Wrapper包装类的使用
Java提供了8种基本数据类型相应的引用数据类型包装类(封装类)
含义
将基本数据类型封装成为类
说明
1)使得基本数据类型的变量具有类的特征。
2)有了类的特点,就可以调用类中的方法,Java才算是真正的面向对象
掌握:基本数据类型、包装类、String三者之间的相互转换
基本数据类型 | 包装类 | 父类 |
byte | Byte | Number |
short | Short | Number |
int | Integer | Number |
long | Long | Number |
float | Float | Number |
double | Double | Number |
boolean | Boolean | —— |
char | Character | —— |
JDk 5.0新特性:自动装箱与自动拆箱
包装过程::基本数据类型==对象
示例:
public class Test{
public void main(String... args){
Order order = new Order( );
System.out.println(order.isMale); // 打印结果:默认值false
System.out.println(order,isFemale); // 打印结果:空值null
}
}
class Order{
boolean isMale;
Boolean isFemale;
}
基本数据类型转换包装类:调用包装类的构造器
int num1 = 10;
Integer in1 = new Integer (num1);
System.out.println (in1.toString( ));
Integer in2 = new Integer (“123”);
System.out.println (in2.toString( ));
包装类转换基本数据类型:调用包装类Xxx的xxxValue( ) 方法
Integer in3 = new Integer (12);
int num2 = in3.intValue( );
System.out.println(num2+1);
装箱和拆箱
自动装箱:基本数据类型转换包装类
int num1 = 10;
Integer in1 = num1; // 自动装箱
boolean b1 = true;
Boolean b2 = b1; // 自动装箱
自动拆箱:包装类转换基本数据类型
System.out.println(int1.toString( ));
int num3 = in1; // 自动拆箱 in1是Integer类型
public void method (Object obj){
System.out.println (obj);
}
基本数据类型、包装类转换String类型:
调用String重载的valueOf (Xxx xxx)
int num1 = 10;
方法一:连接运算:
String str1 = num1 + “”;
方法二:调用String的valueOf (Xxx xxx);
float f1 = 12.3f;
String str2 = String.valueOf (f1);
String类型转换基本数据类型、包装类:
调用包装类的parseXxx (String s) 方法
String str1 = “12”;
int num1 = Integer.parseInt (str1);
System.out.println (num1+1);
String str2 = “true1”;
boolean b1 = Boolean.parseBoolean (str2);
System.out.println (b1);