三、类和对象【黑马JavaSE笔记】

发布于:2023-01-01 ⋅ 阅读:(223) ⋅ 点赞:(0)

类和对象

(一)概念

1.类的特点

  • 类是对象的数据类型
  • 类是具有相同属性和行为的一组对象的集合

2.什么是对象的属性

属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值

3.什么是对象的行为

行为:对象能够执行的操作

4.类和对象的关系

类:类是对现实生活中一类具有共同属性和行为的事物的抽象

对象:是能够看得到摸得着的真实存在的实体


5.类的定义

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

类的组成:属性行为

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

格式:

public class 类名{
    //成员变量
    变量1的数据类型 变量1;
    变量2的数据类型 变量2;
    ...
    //成员方法
    方法1;
    方法2;
    ...
}

例子:

public class phone {
    String brand;
    int price;

    public void call() {
        System.out.println("打电话");
    }
    public void sendMessage() {
        System.out.println("发短信");
    }
}

6.对象的使用

格式:

  • 创建对象:类名 对象名 = new 类名();
  • 使用成员变量:对象名.变量名;
  • 使用成员方法:对象名.方法名();
//创建对象
Phone p = new Phone();
//使用成员变量
p.brand;
//使用成员方法
p.call();

范例:

public class phoneDemo {
    public static void main(String[] args) {
        //创建对象
        phone p = new phone();
        p.brand = "小米";
        p.price = 9999;
        //实使用成员变量
        System.out.println(p.brand);    //小米
        System.out.println(p.price);    //9999
        //使用成员方法
        p.call();  // 打电话
        p.sendMessage();    // 发短信
    }
}


(二)成员变量和局部变量

1.什么是成员变量和局部变量

  • 成员变量:类中方法外的变量
  • 局部变量:方法中的变量

2.区别

image-20211225132538888

:为什么成员变量在堆内存中,局部变量在栈内存中?

因为成员变量是在类中的,类new出的对象是存在于堆内存中的;而局部变量是存在于方法中的,在调用方法时,方法在栈内存中被调用。



(三)封装

1. private关键字

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

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

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

2.this关键字

(1)this修饰的变量用于指代成员变量
  • 方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
  • 方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量
(2)什么时候使用this呢?

解决局部变量隐藏成员变量

(3)this:代表所在类的对象引用
  • 方法被哪个对象调用,this就代表哪个对象

3.封装

(1)封装概述

封装、继承、多态是面向对象三大特征

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

(2)封装原则

将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对信息的操作和访问

成员变量private,提供对应的getXxx()/ setXxx()方法

(3)封装的好处

通过方法来控制成员变量的操作,提高了代码的安全性

把代码用方法进行封装,提高了代码的复用性



(四)构造方法

1.概述

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

作用:创建对象

格式:

public class 类名{
	修饰符 类名(参数){
	}
}

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


2.构造方法的注意事项

(1)构造方法的创建
  • 如果没有定义构造方法,系统会默认给出一个无参构造方法
  • 如果定义了构造方法,系统将不再提供默认的构造方法
(2)构造方法的重载
  • 如果自定义了带参构造方法,还要使用无参构造方法,就必须再写一个无参构造方法
(3)推荐使用的方式
  • 无论是否使用,都手工书写无参数构造方法

3.标准类的制作

创建学生类:

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);
    }
}

创建学生测试类:

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("王五",22);
        s2.show();
    }
}