JAVA基础(九)——面向对象之封装与隐藏

1、为什么有封装

  • 当我们创建一个类的对象以后,我们可以通过”对象.属性“的形式,对对象属性就行赋值,这里赋值操作受到属性的数据类型和存储范围的制约,但是除此之外,没有其他制约条件,但是在实际应用中,往往需要给属性赋值加入额外的限制条件,这个条件就不能在属性声明时体现,我们只能通过方法进行限制条件的添加,同时需要避免用户再使用”对象.属性“的形式进行赋值,则需要将属性声明为私有的(private),此时就体现出面向对象的封装性了。

2、封装性的体现

  • 将类的属性私有化(private)后,同时,提供公共的方法来设置和获取属性的值
  • 不对外暴露的私有方法
  • 单例模式
class Animal{
    
    
    String name;
    private int age;
    int legs;
    // 对属性的设置
    public void setAge(int a){
    
    
        if(a>0 && a%2==0){
    
    
            age = a;
        }else{
    
    
            age = 0;
        }
    }
    //对属性的获取
    public int getAge(){
    
    
        return age;
    }
}

3、权限修饰符

封装性的体现,需要权限修饰符配合

3.1 四种权限修饰符

private、缺省、protected、public

  • 四种权限可以修饰类及类内部结构:属性、方法、构造器、内部类
  • 修饰类只能使用:public、缺省
    在这里插入图片描述

4、类的成员之三——构造器(构造方法)

构造器的作用:创建对象、初始化对象
  • 如果没有显示的定义类的构造器,则系统默认提供一个空参构造器
  • 定义构造器的格式:权限修饰符 类名(形参列表){ }
  • 一个类中定义的多个构造器,彼此构成重构
  • 一旦显示的定义了类的构造器之后,系统就不在提供默认的空参构造器
  • 一个类中,至少要有一个构造器
public class Test{
    
    
    public static void main(String[] args) {
    
    
        Person p= new Person();
        Person p1= new Person("Tom",12);
        p1.getName()
    }
}
class Person{
    
    
    //属性
    int age;
    String name;
    
    //构造器
    public Person(){
    
    
        // 设置所以对象初始化属性值
        name = "Tom";
        age = 12;
    }
	public Person(String n,int a){
    
    
        name = n;
        age = a;
     }

    // 方法
    public void setName(String n){
    
    
       name = n;
    }
    public String getName( ){
    
    
        return name;
    }
}

5、package关键字使用

  • 为了更好的实现类的管理,提供包的概念
  • 使用package声明类或者接口所属的包,提供包的概念
  • 包属于标识符,需要遵循标识符的命名规范(全部小写)
  • 每“."一次,就代表一层文件目录
  • 同一个包下,不能命名同名接口或类,不同包下可以命名同名接口或类
package bank;

在这里插入图片描述

6、MVC模式

在这里插入图片描述

7、import关键字使用

  • 在源文件中显示的使用import结构导入指定包下的接口或类
  • 声明在包的声明和类的声明之间
  • 如果需要导入多个结构,则并列写出即可
  • 可以使用" xxx.* "的方式导入xxx包下的所有接口
package BankNew;
import java.util.ArrayList;
import java.util.*  // 导入这个包下面的所有类

猜你喜欢

转载自blog.csdn.net/weixin_42164004/article/details/114136887