面向对象初级--封装

封装

封装从字面上来理解就是包装的意思

比如鼠标,外部有一个元件,将内部的原件封装起来,至于鼠标内部的细节是什么,我们不需要关心,只需要知道鼠标对外提供了左键、右键、滚动滑轮这三个简单的操作。对于用户来说只要知道左键、右键、滚动滑轮都能完成什么功能就行了。

怎么封装

  1. 属性私有化(使用private关键字进行修饰)
  2. 对外提供简单的操作入口(对外提供公开的读取get()和修改set(),不可以用static修饰
  3. 通常情况下我们访问对象的某个属性不外乎读取 get()和修改set(),所以对外提供的访问入口应该有两个,这两个方法通常被称为 set方法和 get 方法(请注意:set 和get 方法访问的都是某个具体对象的属性不同的对象调用 get 方法获取的属性值不同,所以 set 和get 方法必须有对象的存在才能调用,这样的方法定义的时候不能使用static 关键字修饰,被称为实例方法。实例方法必须使用 “引用”的方式调用。即一个属性对外提供两个set与get方法。

不带static,被称为“实例方法”

实例变量是对象变量,实例方法是对象方法。

实例相关都需要先“New”对象,用“引用.”访问

//get方法
public int getAge(){
return age;
}
 
//set方法
public void setAge(){
age = 18;
}
 

格式是:

public 返回值类型 get +属性名字母大写(无参){

return xxx;

}

set方法的要求:

public void set + 属性名首字母大写(有一个参数){

xxx = 参数;

}

总之,在java 语言中封装的步骤应该是这样的:
需要被保护的属性使用 private 进行修饰,给这个私有的属性对外提供公开的 set 和 get 方法,其
中set方法用来修改属性的值,get方法用来读取属性的值。并且set和get 方法在命名上也是有规范的,规范中要求 set 方法名是 set +属性名(属性名首字母大写),get 方法名是get +属性名(展性名首字母大写)。其中set 方法有一个参数,用来给属性赋值,set 方法没有返回值,一般在 set 方法内部編写安全控制程序,因为毕竟 set 方法是修改内部数据的,而get 方法不需要参数,返回值类型是该属性所属类型(另外set 方法和 get 方法都不带 static 关键宇,不带 static 关键字的方
法称为实例方法,这些方法调用的时候需要先创建对象,然后通过 “引1用”去调用这些方法,实例方法不能直接采用 “类名〞的方式调用。)
 

package com.itheima.a01staticdemo01;

public class Student {
    private String name;
    private int age;
    public  static String teacherName;

    public Student() {
    }

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

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

   public void study() {
       System.out.println(name+"在学习");
   }
   public void show(){
       System.out.println(name+","+age+" ,"+teacherName);
   }
}

             

package com.itheima.a01staticdemo01;
public class StudentTest {
    public static void main(String[] args) {
        //static修饰的techername共享
        //类名调用变量
        Student .teacherName="小陈老师";
        Student s1 = new Student("张三",18);
        s1.study();
        s1.show();
        Student s2 = new Student("李四",26);
        s2.study();
        s2.show();
    }
}

     

相关推荐

  1. C#面向对象——封装封装案例示例

    2024-06-18 11:14:02       21 阅读
  2. day16 初始面向对象

    2024-06-18 11:14:02       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-18 11:14:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-18 11:14:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-18 11:14:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-18 11:14:02       20 阅读

热门阅读

  1. 在 Python 3 中删除字符串文字前面的“b“字符

    2024-06-18 11:14:02       5 阅读
  2. 在无线网中 2.4G、5G、WiFi6、WiFi7 都是什么意思?

    2024-06-18 11:14:02       12 阅读
  3. Oracle中常用特殊字符chr值

    2024-06-18 11:14:02       7 阅读
  4. 这些常用 MySQL 用法,99% 的人都不知道!

    2024-06-18 11:14:02       5 阅读
  5. 数据仓库之主题域

    2024-06-18 11:14:02       6 阅读
  6. python,ipython 和 jupyter notebook 之间的关系

    2024-06-18 11:14:02       6 阅读
  7. LeetCode //MySQL - 178. Rank Scores

    2024-06-18 11:14:02       7 阅读
  8. new char(20)和new char[20]区别

    2024-06-18 11:14:02       11 阅读
  9. 在mysql中GROUP_CONCAT字段的作用

    2024-06-18 11:14:02       8 阅读