Java 封装与关键字

目录

一、封装

(一)封装概述

(二)权限修饰符

(三)封装原则

(四)封装的好处

二、关键字

(一)private关键字

private关键字的使用

(二)this关键字

this调用构造器

(三)package关键字

(四)import关键字


一、封装

(一)封装概述

       封装是面向对象三大特征之一(封装,继承,多态),是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作。

(二)权限修饰符

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

  1. Java规定的4种权限(从小到大排列):private、缺省、protected、public
  2. 4种权限可以用来修饰类及类的内部结构:属性、方法、构造器、内部类
  3. 4种权限都可以用来修饰类的内部结构:属性、方法、构造器、内部类
  4. 修饰只能使用:缺省、public

(三)封装原则

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

(四)封装的好处

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

二、关键字

(一)private关键字

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

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

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

private关键字的使用

一个标准类的编写:

  • 把成员变量用private修饰
  • 提供对应的getXxx() / setXxx()方法

(二)this关键字

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

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

解决局部变量隐藏成员变量的时候使用this

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

方法被哪个对象调用,this就代表哪个对象。

public class Student{
    
    private String name;
    
    private String getName() {
        return name;
    }
    public void setName (String name) {
        this.name = name;
    }
}


public class StudentDemo {
    public static void main (String [] arg) {
        Student s1 = new Student ();
        s1.setName ("学生一");
        
        Stuednt s2 = new Student ();
        s2.setName ("学生二");
    }
}

this调用构造器

  • 在类的构造器中,可以显示的使用 “this(形参列表)” 方式,调用本类中指定的其他的构造器
  • 构造器中不能通过 “this(形参列表)” 方式调用自己
  • 如果一个类中有 n 个构造器,则最多有 n-1 构造器中使用了 “this(形参列表)”
  • 规定 “this(形参列表)” 必须声明在当前构造器的首行
  • 构造器内部,最多只能声明一个 “this(形参列表)” ,用来调用其他的构造器

(三)package关键字

包的定义格式:

格式:package 包名;    (多级包用 . 分开)

范例:package com.file name;

package关键字的使用:

  1. 为了更好的实现项目中类的管理,提供包的概念
  2. 使用 package 声明类或接口所属的包,声明在源文件的首行
  3. 包属于标识符,遵循标识符的命名规则、规范(xxxxxx),“见名知意”
  4. 每 " . " 一次,就代表一层文件目录

补充:同一个包下,不能命名同名的类或者接口

           不同的包下,可以命名同名的类或者接口

在包下使用其他包的类或者接口,需要导包。而使用其他包中的类或者接口时,需要带上包名。

cn.itcast.Teacher t = new cn.itcast.Teacher();

JDK中主要的包介绍

  1. java.lang——包含一些Java语言的核心类,如String、Math、Integer、System和Thread提供常用功能
  2. java.net——包含执行与网络相关的操作的类和接口
  3. java.io——包含能提供多种输入/输出功能的类
  4. java.util——包含一些使用工具类,如定义系统特性、接口的集合框架类、使用与日历日期相关的函数
  5. java.text——包含了一些java格式化相关的类
  6. java.sql——包含了java进行JDBC格式化相关的类
  7. java.awt——包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)

(四)import关键字

import:导入

1. 在源文件 中显式的使用 import 结构导入指定包下的类、接口

2. 声明位置在包的声明和类的声明之间

3. 如果需要导入多个结构,则并列写出即可

4. 可以使用 " xxx.* " 的方式,表示可以导入xxx包下的所有结构 

    如:

原:
import java.util.ArrayList;
import java.util.Array;        (三个都是并列写出)
import java.util.HashMap;

————————————————————————————

以上可以化为:
import java.util.*;

5. 如果使用的类或接口是 java.lang 包下定义的,则可以省略import结构

6. 如果使用的类或接口是同一个包下定义的,则可以省略import结构

7. 如果在源文件中,使用了不同包下的同名的类,则必须至少有一个类需要以全类名的方式显示

    如://全类名的方式显示

com.at.exer3.Account acct1 = new com.at.exer3.Account(1000,2000,0.0123);

8. 使用 " xxx.* " 方式表明可以调用xxx包下的所有结构。

    但如果使用的是 xxx 子包下的结构,则仍需要显式导入

9. import static:导入指定类或接口中的静态变量

导包的格式:

    格式:import 包名;

    例:import java.util.Arrays;
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值