疯狂Java讲义中的知识点09(封装和包)

封装和包

封装

封装、继承、多态——面向对象的三大特征。
封装包含两方面的意思:
——隐藏:隐藏的内部实现细节。
——暴露:将一些操作界面暴露出来。
如果通过暴露的界面来操作对象,该对象的内部状态不会被破坏。

简而言之:封装要求合理隐藏、合理暴露。

访问控制器

private ——> 不写(默认) ——> protected ——> public

private(类访问权限):该修饰符修饰的成员,只能在该类中被访问。 ——(彻底隐藏)
不写(包访问权限):该修饰符修饰的成员,只能在该类及其该类所在包中被访问。——(部分隐藏)
protected(子类访问权限):该修饰符修饰的成员,只能在该类、及其该类所在包、该类的子类中被访问。——(部分暴露)
public(公共):该修饰符修饰的成员可以在任意地方被访问。——(彻底暴露)
在这里插入图片描述
指定原则:

  1. 成员变量(实例变量),通常用private修饰,为了隐藏实现细节。
  2. 为每个成员变量提供public的getter、setter方法,用于控制该成员变量的方法。
  3. 需要暴露的方法,通常用public修饰。
  4. 如果希望一个方法主要用于被子类重写,用protected修饰。

不同公司完全可以定义同名的类,为了解决不同公司、不同项目的类名重复的问题。
Java就引入“包”机制——就是在类名添加一个前缀。taobao的User

Java程序如何为类定义包?
——在源代码中用 package 包名;
——将生成的class文件要放在对应的文件结构下

包名的命名规范:
语法要求:只要标识符即可。
专业要求:推荐用公司域名倒写,再加项目名

【备注】一旦你为类指定了包名之后,使用该类时应该用完整类名:包名+类名

导入包

import的作用:为了省略写包名。
如果不用import,每次用类时都需要使用包名+类名的形式。

import 包名 . 类名;——每次导入一个类。
import 包名 . * ;——导入指定包的所有类。
此时只能代表类,包名不能用 *。

Java程序默认已导入java.lang包下所有类。

静态导入 import static ——Java 1.5 引入。
import的作用:为了省略写包名。
import static 的作用:可以省略写类名。
用于导入指定类的所有静态成员,导入之后,即可省略写类名。

import static 包名. 类名.静态成员名;——每次只导入一个静态成员。
import static 包名. 类名.*;——导入指定类的所有静态成员。

Java源程序的结构:
一条package语句
N条import语句
N个class定义

public class User {

		//将成员变量隐藏——private只能在该类的类体(两个花括号之间)被访问
		private String name;
		private int age;
		
		//项目要求,用户名的长度必须在6~10位之间
		//set方法是没有返回值的
		public void setName(String name)
		{
			if(name.length()>10 || name.length()<6)
			{
			System.out.println("您设置的用户名长度必须为6~10之间:  "+name);
			return ;
		}
		this.name = name;
	}
		//get方法是一定有返回值的 ,而且返回的跟成员变量的类型是一样的
		public String getName()
		{
			return this.name;
		}
		
		
		//项目要求,用户年龄必须在18~60岁之间
		public void setAge(int age)
		{
			if(age>80 || age<18)
			{
				System.out.println("您的年龄不符合:" + age);
				return;
			}
			this.age = age;
		}
		public int getAge()
		{
			return this.age;
		}
}


public class UserTest {

	public static void main(String[] args)
	{
		User u = new User();
//		u.name = "卢金鸿";
		u.setName("卢金鸿");
		System.out.println(u.getName());
		
		u.setName("帅气的卢金鸿");
		System.out.println(u.getName());
		u.setAge(2);
		System.out.println(u.getAge());
		
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_L_J_H_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值