Java面向对象思想以及三大特征之封装

目录

前言

一、类和对象

1.对象

    1)对象概述

    2)对象的属性和行为

    3)面向对象

2.类

    1)类的概述

    2)类的特点

    3)类的定义

    4)对象的使用

二、封装

1.private关键字

2.this关键字

3.封装

    1)封装概述

    2)封装原则

    3)封装好处

4.构造方法

    1)构造方法概述

    2)构造方法的注意事项

    3)标准类制作

总结


前言

   相信很多学习Java的初学者都知道Java是面向对象的编程语言,但是可能有些初学者还不太理解面向对象以及它的三大基本特征,本文就将详细介绍Java面向对象思想及其三大特征之一的封装。


一、类和对象

1.对象

    1)对象概述

    万物皆对象,客观存在的事物皆为对象。这里的客观存在指的是看得见摸得着的某个具体事物。比如,具体的某个人是一个对象;加菲猫是一个对象;哈士奇也是一个对象。

    2)对象的属性和行为

    属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值。比如某个人的姓名是张三,年龄是25,身高是170,体重是60......,姓名、年龄、身高、体重这些特征就是属性,张三、25、170、60这些就是属性的值。

    行为:对象能够执行的操作。比如加菲猫吃鱼,加菲猫是一个对象,吃鱼就是它的行为。

    3)面向对象

   了解关注对象的动作称为面向对象。意思就是我做一件事,我的关注重点不是放在做这件事的过程上,而是放在参与这件事的所有对象上。

    比如,要把一只大象装进冰箱应该怎么做?相信很多读者应该都想到了:第一步打开冰箱,第二步把大象放进冰箱,第三步关上冰箱。这是面向过程的思想。我们现在换一个角度:把大象装进冰箱首先需要一只大象、一个冰箱、一个,我们只需要指挥这个大象装进冰箱就可以了,这就是面向对象的思想。

    大家注意到区别了吗,面向过程我们是执行者,而面向对象我们是指挥者。面向对象是我只要考虑做这件事需要哪些对象,而具体过程让这些对象去做。

2.类

    1)类的概述

    类是对现实生活中一类具有共同属性和行为的事物的抽象。比如人类,人就是一个类;动物类,动物就是一个类。由此可见,类和对象的关系:类是具有共同属性行为的对象的抽象。类是一个抽象概括,并不是实体。

    2)类的特点

    1.类是对象的数据类型。我们之前在学习基础语法时提到过,类是引用数据类型。
    2.类是具有相同属性和行为的一组对象的
集合。类可以包含无数个对象,所以说类是对象的集合。

    3)类的定义

    类的重要性:是Java程序的基本组成单位。

    类的组成:属性行为

  • 属性:在类中通过成员变量来体现(类中方法外的变量)
  • 行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)

   类的定义步骤:

  1. 定义类
  2. 编写类的成员变量
  3. 编写类的成员方法

    4)对象的使用

案例:学生

    需求:首先定义一个学生类,然后定义一个学生测试类,在学生测试类中通过对象完成成员变量和成员方法的使用。

    分析: 成员变量:姓名,年龄…

               成员方法:学习,做作业…

   

  代码:

package com.itheima_02;
/*
    学生类
 */
public class Student {
    //成员变量
    String name;
    int age;

    //成员方法
    public void study() {
        System.out.println("好好学习,天天向上");
    }

    public void doHomework() {
        System.out.println("键盘敲烂,月薪过万");
    }
}
package com.itheima_02;

/*
    学生测试类
 */
public class StudentDemo {
    public static void main(String[] args) {
        //创建对象
        Student s = new Student();

        //使用对象
        System.out.println(s.name + "," + s.age);

        s.name = "林青霞";
        s.age = 30;

        System.out.println(s.name + "," + s.age);

        s.study();
        s.doHomework();
    }
}

二、封装

1.private关键字

  • 是一个权限修饰符
  • 可以修饰成员(成员变量和成员方法)
  • 作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问

    针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作:

  1. 提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰
  2. 提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰

2.this关键字

1)this 修饰的变量用于指代成员变量

  • 方法的形参如果与成员变量同名,不带 this 修饰的变量指的是形参,而不是成员变量
  • 方法的形参没有与成员变量同名,不带 this 修饰的变量指的是成员变量

2)什么时候使用 this 呢?解决局部变量隐藏成员变量

3)this:代表所在类的对象引用

  • 记住:方法被哪个对象调用,this 就代表哪个对象

3.封装

    1)封装概述

    是面向对象三大特征之一(封装,继承,多态)。

    是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的。

    2)封装原则

    将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问成员变量private,提供对应的getXxx()/setXxx()方法

    3)封装好处

    通过方法来控制成员变量的操作,提高了代码的安全性;把代码用方法进行封装,提高了代码的复用性。

4.构造方法

    1)构造方法概述

    构造方法是一种特殊的方法

    作用:创建对象 

   

    功能:主要是完成对象数据的初始化

    2)构造方法的注意事项

    1.构造方法的创建

  • 如果没有定义构造方法,系统将给出一个默认无参数构造方法
  • 如果定义了构造方法,系统将不再提供默认的构造方法

    2.构造方法的重载

  • 如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法

    3.推荐的使用方式

  • 无论是否使用,都手工书写无参数构造方法

    3)标准类制作

    

案例:学生(标准类)

代码: 

package com.itheima_09;

/*
    学生类

    成员变量
        使用private修饰

    构造方法
        提供一个无参构造方法
        提供一个带多个参数的构造方法

    成员方法
        提供每一个成员变量对应的setXxx()/getXxx()
        提供一个显示对象信息的show()
 */
public class Student {
    //成员变量
    private String name;
    private int age;

    //构造方法
    public Student() {
    }

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

    //成员方法
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void show() {
        System.out.println(name + "," + age);
    }
}
package com.itheima_09;

/*
    学生测试类

    创建对象并为其成员变量赋值的两种方式
        1:无参构造方法创建对象后使用setXxx()赋值
        2:使用带参构造方法直接创建带有属性值的对象
*/
public class StudentDemo {
    public static void main(String[] args) {
        //无参构造方法创建对象后使用setXxx()赋值
        Student s1 = new Student();
        s1.setName("林青霞");
        s1.setAge(30);
        s1.show();

        //使用带参构造方法直接创建带有属性值的对象
        Student s2 = new Student("林青霞",30);
        s2.show();
    }
}


总结

    对于Java面向对象思想及其三大特征之一的封装,本文就介绍到这里。后续我还将发布博客介绍三大特征的另外两个特征——继承和多态,感兴趣的朋友点下关注哦,防止迷路。如果朋友们觉得这篇博客还不错的话就点个赞吧,有任何问题欢迎在评论区留言哟!


版权声明:本文为weixin_45676761原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。