Java封装

本文深入探讨了Java编程的基础知识,包括访问修饰符、封装、静态方法、包管理及类的创建。通过具体实例,讲解了如何设计图书信息类和用户信息类,实现了属性设置、信息验证等功能。

练习
一、选择

1、当类中的一个成员方法被下面哪个修饰符修饰后,该方法只能在本类中被访问B
A. public
B. private
C. final
D. default
2、运行以下Java代码,说法正确的是A
在这里插入图片描述
A. 15
B. 程序运行正常,但无输出
C. 编译报错
D. 运行报错
3、java封装的意义(多选)AB
A. 防止使用者错误修改系统的属性
B. 提高系统的独立性
C. 提高软件的可重用性
D. 提高构建大型系统的风险
4、下面代码的运行结果是A
在这里插入图片描述
A. 我是一名学生。
B. 我是一个即将大学毕业的学生。
C. 我是一名学生。
我是一个即将大学毕业的学生。
D. 编译错误
5、关于package+包名;的说法不正确的是A
A. 一个java源文件可以有多个package语句
B. 建议包名应该全部英文小写
C. 建议包名命名方式:域名倒叙+模块+功能
D. "package+包名;"必须放在java源文件中的第一行
6、下面关于import,class和package的声明顺序哪个是正确的A
A. package,import,class
B. class,import,package
C. import,package,class
D. package,class,import
7、以下代码运行结果为:A
在这里插入图片描述
A. 编译出错
B. 输出:c
C. 编译正常,运行时报错
D. 编译正常,运行时无输出结果
8、下列关于static的说法不正确的是A
A. 可以定义静态方法,但不能定义静态变量
B. class前不可以是用static作为修饰符
C. static可以把普通的成员方法变为一个静态方法
D. static可以把一个普通方法变为一个类方法
9、关于静态方法和非静态方法,以下描述正确的是D
A. 非静态方法只能访问非静态变量
B. 静态方法既可以直接访问本类的静态变量,也可以直接访问本类的非静态变量
C. 静态方法在类外只能通过类名来调用
D. 非静态方法在类外只能通过对象来调用
10、下面这段代码中,报错的地方原因是(多选)ACD
在这里插入图片描述
A. 没有传入参数
B. 没有使用类方法来调用
C. 不能使用静态引用去访问非静态的方法
D. 只要实例化对象就不会报错了
二、编程

1、编写自定义类实现图书信息设置
任务:
属性:书名、作者、出版社、价格
方法:信息介绍
要求:

设计构造函数实现对属性赋值
设置私有属性,get/set方法实现对属性的访问
限定图书价格必须大于10,如果无效需进行提示,并强制赋值为10
限定作者、书名均为只读属性
信息介绍方法描述图书所有信息

public class Book {
	//属性:书名、作者、出版社、价格
	private String bookName;
	private String writer;
	private String press;
	private double price;
	
	public Book(){
		this.bookName = "小王子";
		this.writer = "安托万.德.圣.埃克苏佩里";
		this.press = "北京邮电出版社";
		this.price = 128;
	}
	public String getBookName() {
		return bookName;
	}
	public void setBookName(String bookName) {
		this.bookName = bookName;
	}
	public String getWriter() {
		return writer;
	}
	public void setWriter(String writer) {
		this.writer = writer;
	}
	public String getPress() {
		return press;
	}
	public void setPress(String press) {
		this.press = press;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		if(price < 10){
			return;
		}
		this.price = price;
	}
	
	
	public Book(String bookName, String writer, String press, double price) {
		super();
		this.setBookName(bookName);
		this.setPress(press);
		this.setWriter(writer);
		this.setPrice(price);
	}
	
	public String info(){
		String str = "书名:"+this.getBookName();
		str+= "\n作者:"+this.getWriter();
		str+= "\n出版社:"+this.getPress();
		str+= "\n价格:"+this.getPrice();
		return str;
	}
}
import com.dodoke.myobject.bean.Book;

public class BookTest {
	public static void main(String[] args) {
		Book book = new Book();
		System.out.println(book.info());
	}
}

2、编写自定义类实现用户信息类。
任务:

用户类:
属性:用户名、密码
用户管理类:
方法:用户信息验证
要求:
1. 设计构造函数实现对属性赋值
2. 设置私有属性,get/set方法实现对属性的访问
3. 用户信息验证判断两个用户信息是否一致。当用户名和密码都一致的时候返回:用户名和密码一致,否则返回:用户名或密码不一致

PS:
字符串的判断不可以使用==进行判断,可以通过equals()方法进行字符串内容的判断,如果内容相等返回值为true,反之为false,如当str代表用户性别时,可以通过如下代码,判断性别为“男”还是“女”
在这里插入图片描述
代码运行结果参考:
在这里插入图片描述

public class Infor {
	private String userName;
	private String password;
	
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public void Info(){
		
	}
	public Infor(String userName, String password) {
		super();
		this.setUserName(userName);
		this.setPassword(password);
	}
	
	public String info(){
		String str = "";
		str = "用户名:"+this.getUserName();
		str+= "\n密码:"+this.getPassword();
		return str;
	}
	
}

import com.dodoke.myobject.bean.Infor;

public class InfoManager {
	public static void main(String[] args) {
		Infor info = new Infor("Lucy", "123456");
		Infor info2 = new Infor("Mike","123456"); 
		System.out.println(info.info());
		System.out.println(info2.info());
		if(info.info().equals(info2.info())){
			System.out.println("用户名和密码一致");
		}else{
			System.out.println("用户名和密码不一致");
		}
	}
}

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值