Java基础复习_day05_面向对象

面向对象

1. 类与对象的理解

① 类的理解

  • 类是对现实生活中一类具有共同属性和行为的事物的抽象
  • 类是对象的数据类型,类是具有相同属性和行为的一组对象的集合
  • 简单理解:类就是对现实事物的一种描述

② 类的组成

  • 属性:指事物的特征,例如:手机事物(品牌,价格,尺寸)
  • 行为:指事物能执行的操作,例如:手机事物(打电话,发短信)

③ 对象的理解

  • 客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。

④ 类和对象的关系

  • 类是对事物的一种描述,对象则为具体存在的事物

2. java中类的定义

① 类的组成

  • 成员变量: 类中方法外的变量, 用来描述类的属性;
  • 构造方法: 仅有修饰符和方法名,且方法名和类名一致的特殊方法,用来创建对象;
  • 成员方法: 非静态的方法,不带static关键字,用来描述类的行为;

② 类的作用

  • 描述事物;
  • 类是java中的数据类型, 可以通过类创建对象;

③ 类的定义格式

public class 类名 {
    //成员变量
    private 数据类型 变量名;
    ...
    //构造方法
    public  类名(形参){
        此处省略一万行...
    }
    //成员方法
    public 返回值类型 方法名(形参){
        方法体;
    }
    ...
}

3. java中对象的创建

  • 创建格式: 类名 对象名 = new 类名(实际参数);

4. java中类与对象的关系

  • 一个类,可以创建出很多对象;
  • 一个对象,必须有自己所属的类;
  • 注意:对象与对象之间,相互独立;

5. 成员变量与局部变量的区别

  • 定义位置不同;成员变量在类中,而局部变量在方法体或形参位置;
  • 生命周期不同;成员变量随着对象的创建而存在,随着对象的死亡而死亡,而局部变量随着方法的调用而存在,方法的结束而死亡;
  • 默认值不同;成员变量有默认值,规则同数组,而局部变量没有默认值;
  • 内存位置不同;成员变量在堆中,而局部变量在栈中;

6. 封装

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

② 特点
被private修饰,只能在本类中使用,在外部无法直接使用;

③ 好处

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

④ 示例

public class student {
    private int id;
    private String name;

    public student() {
    }

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

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
  • 在student类中,成员变量id 和 name 使用private修饰, 使其只能在该类内部使用, 外界无法直接访问这两个属性, 只能通过该类提供的getter和setter 方法来进行访问, 从而达到了封装的效果;

7. 构造方法

① 概念: 仅有修饰符和方法名,且方法名和类名一致的特殊方法

② 作用

  • 创建对象
  • 给类中的成员变量初始化(与setXxx方法的区别: 构造方法是创建对象的过程中对成员变量赋值;setXxx方法,是对象创建成功后,对成员变量修改值;)

③ 格式

public  类名(形参){
	方法体;
	(一般是对成员变量赋值)
}

④ 注意事项

  • 如果一个类,没有写构造方法,那么java会默认给一个空参数的构造方法;(一旦手写了任意形式的构造方法,那么java将不再给默认的空参构造方法);
  • 构造方法每执行一次,就意味着在堆中,新创建了一个对象;
  • 构造方法可以重载;

8. javaBean

① 特点

  • 成员变量私有;
  • 写成员变量对应的getter与setter方法;
  • 写空参数的构造方法和全参数的构造方法;

② 示例

public class Phone {
	// 成员变量
    private String brand;
    private String type;
    private double price;

	// 空参构造
    public Phone() {
    }

	// 全参构造
    public Phone(String brand, String type, double price) {
        this.brand = brand;
        this.type = type;
        this.price = price;
    }

	// getter and setter 方法
    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}
发布了22 篇原创文章 · 获赞 4 · 访问量 1287

猜你喜欢

转载自blog.csdn.net/weixin_42931689/article/details/104141440