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

封装得关键在于:一个类不允许直接修改另一个类的实例域,程序仅仅通过对象的方法与对象数据进行交互
/**
 * 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;

    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值