封装
- 该露的露,该藏的藏
我们程序设计要追求”高内聚,低耦合”。
1. 高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;
2.低耦合:仅暴露少量的方法给外部使用。(比如计算机只外露一些接口等,详细的东西都封装在机器里)
-
封装(数据的隐藏)
-
通常,应禁止直接访问- -个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。
记住这句话就够了:属性私有,get/set
import com.oop.Demo04.Studen;
/*
1.提高程序的安全性
2.隐藏代码的实现细节
3.统一接口
4.系统可维护增加
*/
//一个项目应该只有一个main方法
public class Application {
public static void main(String[] args) {
Studen x = new Studen();
x.setName("小明");
System.out.println(x.getName());
x.setNumber(12);
//快捷键 x.getNumber().sout
System.out.println(x.getNumber());
x.setSex('男');
System.out.println(x.getSex());
//不合法的
x.setNumber(371293712);
System.out.println(x.getNumber());
}
}
package com.oop.Demo04;
//类
public class Studen {
//private 属性私有,不能正常调用
//性别
private char sex;
//名字
private String name;
//学号
private int number;
//学习()
private void study(){
}
//提供一些可以操作这个属性的方法。
// 提供一些public的get/set方法
//只有get就代表只读不写反之就是只写不读
//get获得这个数据
public char getSex (){
return this.sex;
}
public String getName(){
return this.name;
}
//set 给这个数据设置值;
public void setName(String name){
this.name = name;
}
public void setSex(char sex){
this.sex = sex;
} //也可以设置一样的名字重载
public void setSex(char sex,int a){
this.sex = sex;
}
//alt +回车 选getter,setter 或者两个一起
public int getNumber() {
return number;
}
public void setNumber(int number) {
//因为封装可以做安全性的检测
if(number > 99999 || number< 0 ){
this.number = 0;
}else{
this.number = number;
}
}
}
在Java中判断两个类是否相同我们其实主要看两个东西
//方法名 参数列表 方法的重载
构造器
- 构造器的特征
- 它具有与类相同的名称
- 它不声明返回值类型。(与声明为void不同)
- 不能被static、 final、 synchronized、 abstract、 native修饰,不能有
return语句返回值
- 构造器的作用: 创建对象;给对象进行初始化
如: Order o = new Order(); Person p = new Person(“Peter”,15);
- 如同我们规定每个“人”一出生就必须先洗澡,我们就可以在“人” 的
构造器中加入完成“洗澡”的程序代码,于是每个“人”一出生就会自
动完成“洗澡”,程序就不必再在每个人刚出生时一个一个地告诉他们
要“洗澡”了。
语法格式:
修饰符 类名 (参数列表) {
初始化语句;
public class Demo01 {
public static void main(String[] args) {
Person p1 = new Person("Tom");
System.out.println(p1.name);
}
}
class Person {
//属性
String name;
int gae;
//构造器
public Person(){
//无参构造
}
public Person(String n){
name = n;
}
}
}
- 根据参数不同,构造器可以分为如下两类:
隐式无参构造器(系统默认提供)
显式定义一个或多个构造器(无参、有参)
注 意:
Java语言中,每个类都至少有一个构造器
默认构造器的修饰符与所属类的修饰符一致
一个类中显式定义了构造器, 则系统不再提供默认空参构造器
一个类中定义的多个构造器,彼此之间构成重载
父类的构造器不可被子类继承
属性赋值的先后顺序
- 默认初始化值
- 显示初始化 int i = 0
- 构造器赋值
- 通过“对象.方法 ”或者“对象.属性”
以上操作的先后顺序