Java基础笔记(十四)——封装
封装(好比ATM机)
将类的某些信息隐藏在类内部,不允许外部程序直接访问(隐藏对象的信息),通过该类提供的方法来实现对隐藏信息的操作和访问(留出访问的接口)。
特点:
1.只能通过规定的方法访问数据。
2.隐藏类的实例细节,方便修改和实现。
实现步骤:
1.修改属性的可见性——设为private。
2.创建getter/setter方法——设为public,用于属性的读写(只读属性(无法修改)/只写属性(无法获取))。
3.在getter/setter方法中加入属性控制语句——对属性值的合法性进行判断。
封装前
public class Dog {
int age;
}
public class DogTest {
public static void main(String[] args){
Dog d=new Dog();
d.age=3;
System.out.println("年龄:"+d.age);
}
}
//运行结果
昵称:3
封装后
public class Dog {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
if(age<0){
System.out.println("输入错误");
}else
this.age = age;
}
}
public class DogTest {
public static void main(String[] args){
Dog d=new Dog();
d.setAge(3);
System.out.println("年龄:"+d.getAge());
Dog d1=new Dog();
d1.setAge(-3);
System.out.println("年龄"+d1.getAge());//因为没有赋值成功,所以值为默认初始值0
Dog d2=new Dog();
d1.setAge(-5);
if(d1.getAge()==0) //简单地加个判断处理
return;
System.out.println("年龄"+d1.getAge());
}
}
//运行结果
年龄:3
输入错误
年龄0
输入错误
用带参构造函数给对象的属性赋值
public class Dog {
private int age;
public Dog(int age){
this.setAge(age); //这里若用this.age=age;则不能判断是否输入错误
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age<0){
System.out.println("输入错误");
}else
this.age = age;
}
}
public class DogTest {
public static void main(String[] args){
Dog d=new Dog(3);
if(d.getAge()==0)
return;
System.out.println("年龄:"+d.getAge());
Dog d1=new Dog(-3);
if(d1.getAge()==0)
return;
System.out.println("年龄"+d1.getAge());
}
}
//运行结果
年龄:3
输入错误
包
作用:
1.提供多层命名空间,解决命名冲突,通过使用package,使处于不同package的类可以存在相同的名字(因为处在不同的文件夹下)。
2.对类按功能分类,使项目的组织更加清晰。当开发一个有非常多的类的项目时,如果不使用package对类进行分类,而是把所有类都放在一个package下,这样的代码不仅可读性差,而且可维护性也不好,会严重影响开发效率。
定义包:
语法:package 包名;
(1)必须放在Java源文件中的第一行
(2)一个Java源文件中只能有一个package语句
(3)包名全部英文小写
(4)命名方式:域名倒序+模块+功能
导入包:
语法:import 包名.类名
例:
导入util包中全部类:
import java.util.*;
导入包中指定类:
import java.util.Scanner;
常用系统包:
java.lang 包含java语言基础的类 (此包不需要显式地导入)
java.util 包含java语言中各种工具类
java.io 包含输入、输出相关功能的类
Java基础笔记(十四)——封装的更多相关文章
- java基础(十四)集合(一)
这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...
- Java基础(十四):泛型
一.Java 泛型: Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 泛型的本质是参数化类型,也就 ...
- Java学习笔记十四:如何定义Java中的类以及使用对象的属性
如何定义Java中的类以及使用对象的属性 一:类的重要性: 所有Java程序都以类class为组织单元: 二:什么是类: 类是模子,确定对象将会拥有的特征(属性)和行为(方法): 三:类的组成: 属性 ...
- Java基础笔记(四)——命名规则、数据类型
标识符即Java程序中需要自定义的名称,如变量名.方法名.类名.包名.工程名等. 标识符的命名规则: 1.可由字母.数字.下划线(_)和美元符($)组成,不能以数字开头. 2.严格区分大小写. 3.不 ...
- 正则表达式、Calendar类、SimpleDateFormat类、Date类、BigDecimal类、BigInteger类、System类、Random类、Math类(Java基础知识十四)
1.正则表达式的概述和简单使用 * A:正则表达式(一个字符串,是规则) * 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.其实就是一种规则.有自己特殊的应用. * B: ...
- 夯实Java基础(十四)——Java8新的日期处理类
1.前言 Java8之前处理日期一直是Java程序员比较头疼的问题,从Java 8之后,Java里面添加了许多的新特性,其中一个最常见也是最实用的便是日期处理的类——LocalDate.LocalDa ...
- java基础(十四章)
1.Java中的包(package) 2.1 包,对应到磁盘中的文件夹 2.2 新建一个class,默认保存在缺省包中 2.3 声明包的关键字:package package语句,置顶位置 2.4 导 ...
- Java 读书笔记 (十四) Java 方法
finalize() 方法 finalize() 用来清除回收对象. //为什么要回收内存?怎样写可以避免内存过多占用?什么时候需要手动回收内存? protected void finalize() ...
- Java基础(十四)代理(Proxy)
1.为什么要使用代理 代理可以在运行时创建一个实现了一组给定接口的新类.这种功能只有在编译时无法确定需要实现哪个接口时才有必要使用. 假设有一个表示接口的Class对象(有可能只包含一个接口),它的确 ...
- java基础第十四篇之Map
一,Map集合的特点: * * 1.Map集合和Collection集合,没有关系 * * 2.Map集合的元素是成对存在(夫妻关系) * Collection集合的元素是独立存在 ...
随机推荐
- 查看字符串的编码chardet
The Universal Character Encoding Detector chardet.detect("str") 返回:{‘confidence’:1.0,'enco ...
- freeMarker(四)——模板开发指南之模板
学习笔记,选自freeMarker中文文档,译自 Email: ddekany at users.sourceforge.net 模板开发指南之模板 1. 总体结构 实际上用程序语言编写的程序就是模板 ...
- FJOI2016 神秘数
题目大意 给定长为$N$一个序列,每次询问一个区间,求最小的不能表示为由区间内若干个(可以是$0$个)数的和的非负整数. 考虑一个可重集合$S$,设抽取$S$中若干个数相加无法得到的最小非负整数为$A ...
- 线段树Final版本
结构体是个好东西... 看着逼格很高 #include<iostream> #include<cstdio> #include<cstdlib> #include& ...
- 命令行启动nodejs方式 小总结
之前启动nodejs都是写一个命令行文件,如nodejs.cmd,内容为:start node E:\node\app.js. 今天突然想到之前也用过另外一种方式启动,就是在命令行通过cd命令先找到n ...
- chromedriver下载
https://www.cnblogs.com/vickey-wu/p/6629407.html
- FATFS 文件系统
转载请注明出处:http://blog.csdn.net/qq_26093511/article/details/51706228 1.文件系统是什么? 负责管理和存储文件信息的软件机构称为文件管理系 ...
- day03 hadoop的解压与配置文件的配置,还需要看视频
拷贝hadoop1.2.1.tar.gz安装包到其他的节点上 scp -r ~/hadoop-1.2.1.tar.gz root@node2:~/ tar -zxvf hadoop-1.2.1.t ...
- [ural1132]Square Root(cipolla算法)
题意:求${x^2} \equiv n\bmod p$ 解题关键: 定理:若$a$满足$w = {a^2} - n$是模$p$的二次非剩余,即,${x^2} = w\bmod p$无解,则${(a + ...
- Struts2工作原理和执行流程图
在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Controller.ActionProxy.ActionMapping.Configuration Man ...