当前位置: 首页 > article >正文

类和对象—封装

目录

  • 1、封装的概念
  • 2、访问限定符
  • 3、包
    • 3.1、包的概念
    • 3.2、导入包的类

1、封装的概念

封装就是套壳屏蔽细节,比如计算机厂商在出厂时,在外部套上壳子,将内部实现细节隐藏起来,仅仅对外提供开关机、键盘以及 USB 插孔等,用户无需知道主机内部的核心部件、电路走线等,仅仅只需要通过开关机、键盘等与计算机交互即可。
封装:将数据和操作数据的方法有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象实现交互。

2、访问限定符

Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,而访问权限用来控制方法或者字段能否直接在类外使用。Java中提供了四种访问限定符:

在这里插入图片描述
注意:

  • default:什么都不写时的默认权限。
  • 访问权限除了可以限定类成员的可见性,还可以控制类的可见性。
  • 一般情况下成员变量设置为 private,成员方法设置为 public。

3、包

3.1、包的概念

为了更好的管理类,将多个类收集在一起成为一组,称为软件包,类似于目录。在 Java 中也引入了包的概念。

  • 包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式。
  • 只要处在不同的包中,在同一个工程中可以有相同名称的类。

3.2、导入包的类

  1. 通过完整包名导入,但是这种方法比较繁琐,不推荐。
public class Test {
	public static void main(String[] args){ 
		java.util.Date date = new java.util.Date(); 				
		System.out.println(date.getTime()); 
	} 
}
  1. 利用 import 语句导入包。
import java.util.Date;
public class Test {
	public static void main(String[] args){ 
		Date date = new Date(); 				
		System.out.println(date.getTime()); 
	} 
}

如果需要使用 java.util 中的其他类,可以使用 java.util.* ,意思是导入该包下的所有类。但是这样使用容易出现问题,例如 java.sql 和 java.util 中都有类 Date,此时使用 Date 就会出现歧义,编译出错,在这种情况下就需要使用完整的类名。

import java.util.*; 
import java.sql.*;

public class Test {
	public static void main(String[] args){ 
		java.util.Date date = new java.util.Date(); 				
		System.out.println(date.getTime()); 
	} 
}

可以使用 import static 导入包中静态的方法和字段。

import static java.lang.Math.*;
public class Test {
	public static void main(String[] args) {
		double x = 30;
		double y = 40; 
		// 静态导入的方式写起来更方便一些
		// double result = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
		double result = sqrt(pow(x, 2) + pow(y, 2)); 
		System.out.println(result); 
	} 
}

http://www.kler.cn/a/600626.html

相关文章:

  • KNN算法+鸢尾花分类+手写数字识别案例
  • Swift实现嵌套json字典重排序并输出string
  • 树状数组模板
  • leetcode 之(移除元素)
  • 分布式架构-Spring技术如何能实现分布式事务
  • Matlab教程002:Matlab变量和基本运算符的使用
  • 【Redis】深入解析 Redis 五大数据结构
  • 【构建性能分析插件设计与实现:打造前端项目的性能透视镜】
  • Ubuntu Server版本Ubuntu 24.04.2 LTS下载与安装-详细教程,细致到每一步都有说明
  • 如何在jupyter notebook中使用django框架
  • 隔空打印,IPP,IPD,HP Jetdirect协议的区别(Mac添加打印机四种协议的区别)
  • 科学计算(2):矩阵特征值计算
  • 【Linux系统篇】:进程流水线的精密齿轮--创建,替换,终止与等待的工业级管控艺术
  • 【机器学习】线性回归和逻辑回归的区别在哪?
  • 什么是 LLM(大语言模型)?——从直觉到应用的全面解读
  • PHP eval 长度限制绕过与 Webshell 获取
  • 【linux】ubuntu 用户管理
  • javaSE.多维数组
  • 开发中后端返回下划线数据,要不要统一转驼峰?
  • CUDA 学习(3)——CUDA 初步实践