您的位置:首页 > 编程语言 > Java开发

第十一节 java面向对象,封装的简单介绍

2017-12-04 21:32 316 查看
封装得关键在于:一个类不允许直接修改另一个类的实例域,程序仅仅通过对象的方法与对象数据进行交互
/**
* Created by Administrator on 2017/12/4.
*/
public class Person {
public String name;
private int age;

public Person(String name, int age) {
this.name = name;
this.age = age;
}
}

**
* Created by Administrator on 2017/12/4.
* 声明一个学生对象,包含私有的属性name和age
* 对外提供get set方法来获取与设置对象的属性
*
* 对象包含属性与方法:属性是定义此对象的状态,方法是用来改变对象的状态的
*
* private修饰变量代表此属性私有化,只有类中可以访问,类外事无法直接访问的
* 这样就保护了直接修改变量,只能通过方法来进行访问与修改,但是如果说类中的属性
* 不需要外界修改,那么完全可以不提供get,set方法,达到保护的目的
*
*/
public class Student {

private String name;//成员变量
private int age;

public void setName(String name) {
this.name = name;
}

public void setAge(int age) {
this.age = age;
}

public String getName() {
return name;
}

public int getAge() {
return age;
}
}

**
*对象封装的意义:属性私有化,对象只向外暴露修改属性的方法,而不直接向外暴露属性
* 这样可以控制属性的访问
*
* 如果属性私有化,那么如果不想外部修改某个属性的状态,那么可以直接不提供此属性的修改方法
*
* 并且在修改或者获取属性时,还可以对方法进行统一的管理,例如:已经过了一年,那么所有人年龄都会
* 加一岁,那么在获取年龄的时候,就可以向如下的get方法写,所有在获取年龄的时候都会+1
* public int getAge() {
* return age+1;
* }
*/
public class base01 {
public static void main(String[] args) {
/**
* 使用new 关键字创建对象,所有的对象都继承object类,如果类中没有显示的定义
* 构造函数,那么会调用object的无参构造函数创建对象
*/
Student s=new Student();

//为student的age和name进行set赋值
s.setAge(12);
s.setName("xiaohei");

String name=s.getName();
int age=s.getAge();

System.out.println(name);//xiaohei
System.out.println(age);//12

System.out.println("----------------------");
/**
* Person类定义了:public修饰的name属性,private修饰的age属性
* 并且显示的定义了构造函数,如下
*/

//此时编译不通过,因为已经显示的提供了有参的构造函数,那么久不能调用父类Object中的无参构造函数了
//Person p=new Person();

//此时直接创建了一个对象,并且name等于xiaohei,age=12
Person p=new Person("xiaohei",12);

//由于name属性是public修饰,所以可以随意的利用object.filed进行访问与修改,如下:
p.name="laowang";
System.out.println(p.name);//laowang 直接可以进行修改

//此种方式编译无法通过,因为此属性是私有化的,无法直接访问
//p.age=12;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐