(Java 学习 尚硅谷 b 站大学版)Day14 面向对象封装与构造器

4-7 面向对象特征之一: 封装与隐藏


概念: 隐藏对象内部的复杂性,只对外公开简单的接口

​ 通俗来说,把该隐藏的隐藏起来,该暴露的暴露出来

一、问题引入:

​ 当我们创建一个类的对象后,我们可以通过“对象.属性”的方式对对象的属性进行赋值,这里赋值操作受到

的属性的数据类型和存储范围的制约 在实际开发中,我们需要 给属性赋值加入额外的限制条件,我们只能通过方法进行限制条件的添加,比如某某方法。同时,我们要避免用户再使用“对象.属性”的方式对属性进行赋值,则需要将属性声明为私有的(private)---->针对属性,就体现出封装性

二、封装性的体现

​ 我们将类的属性私有化(private),同时,提供公共的方法 来获取(getXXX) 和 设置(setXXX)

​ 拓展: 不对外暴露、私有的方法; 单例模式…

三、权限修饰符(封装性的体现,需要使用权限修饰符)

​ 1、Java 权限修饰符: Private\public\protected\缺省

修饰符 类内部 同一个包 不同包的子类 同一个工程
private YES
(缺省) YES YES
protected YES YES YES
public YES YES YES YES

以上为修饰符修饰后,其作用的范围。 需要记牢!

​ 2、权限修饰符可以修饰: 属性、方法、构造器、内部类

​ 3、具体的:4 种权限都可以修饰类的内部结构;修饰类的话只能使用缺省和 public

总的来说:Java 提供了四种权限修饰符来修饰类及类的内部结构,体现类及类的内部结构在被调用时的可见性



4-8 类的成员其三:构造器(或构造方法、constructor)


一、构造器的作用:

1、创建对象: new+构造器

举个例子 Person p=new Person(); 画下划线的部分就是构造器

2、初始化对象的信息

二、说明

1、如果没有显示的定义类的构造器,则系统默认提供一个空参的构造器(且构造器的权限和类的权限相同)

2、定义构造器的格式: 权限修饰符 类名 (形参列表){}

3、一个类中定义的多个构造器,彼此构成重载

4、一旦我们显式的定义了类的构造器之后,系统就不会再提供默认的空参构造器

5、一个类中,至少会有一个构造器

总结:属性赋值的先后顺序

1、默认初始化

2、显示初始化

3、构造器赋值

4、通过“对象.方法”或“对象.属性”的方式进行赋值

以上操作的先后顺序:1 --> 2–> 3–> 4


拓展: JavaBean:是 Java 语言写成的可重用组件

即满足以下条件的 Java 类:

​ a.类是公共的 b.有一个无参的公共的构造器 c.有属性,且有对应的 get、set 方法

拓展小知识: UMl 类图

CleanShot 2025-02-04 at 23.37.06@2x



4-9 关键字:this 的使用


this 关键字的使用:

1、this 可以修饰属性、方法、构造器

2、this 修饰属性和方法:

​ this 理解为当前*对象的*或当前正在创建的对象

​ 2.1 在类的方法中,我们可以使用“this.属性”或者“this.方法”的方式,调用当前对象的属性或方法,通常情况我们都省略了(编译过程中自动会补上)

但是,如果方法的形参和类的属性同名的时候,我们必须显示的使用"this.变量"的方式,表示此变量是属性,而非形参

​ 2.2 在类的构造器中,也是同样

3、this 调用构造器

​ 1、我们在类的构造器中,可以显示的使用"this(形参列表)"方式,调用本类中指定的其他构造器

​ 2、构造器中不能用 this(形参列表)方式调用自己本身

​ 3、如果一个类中有 n 个构造器,则最多有“n-1”构造器中使用了“this(形参列表)” 主要是避免无限循环,两个互相调

​ 4、调用构造器必须放在构造器 首行

​ 5、构造器内部:最多只能声明一个 “this(形参列表)”


public Person(){
    
    
  this.eat();
}

public Person(String name){
    
    
  this();   //这一步直接调用了上面的空参构造器
  this.name=name;
}
public Person(String name,int age){
    
    
  this(age);  //这一步 调用了上面的构造器
  
  
}


public void eat(){
    
    
  System.out.println("people need to eat");
}


总结:

封装与构造器是面向对象里面 比较重要的内容,需要多多想一想其思想,并且多敲代码去感悟。

每日一句鸡汤:
称为你想吸引的能量!
Fighting