Java第三次作业——面向对象基础(封装)

mac2022-06-30  79

Java第三次作业——面向对象基础(封装)

(一)学习总结

1.什么是面向对象的封装性,Java中是如何实现封装性的?试举例说明。

将类的一些信息隐藏在类的类部,不让外界直接访问,但可以间接访问。保证了数据的有效性,也提高代码的安全性。 格式 :private 数据类型 变量名,提供访问成员变量的getter/setter方法。

2.阅读下面程序,分析是否能编译通过?如果不能,说明原因。

(1)

class A{ private int secret = 5; } public class Test{ public static void main(String args[]){ A a = new A(); System.out.println(a.secret++); } }

不能通过。 问题:字段 a.secret被封装,不可视 解决:去掉private。

(2)

public class Test{ int x = 50; static int y = 200; public static void method(){ System.out.println(x+y); } public static void main(String args[]){ Test.method(); } }

不能通过。 问题:x为非静态字段,无法引用 解决:应该在int x 前加 static

3 . 使用类的静态变量和构造方法,可以跟踪某个类创建的对象个数。声明一个图书类,数据成员为编号,书名,书价,并拥有静态数据成员册数记录图书的总数。图书编号从1000开始,每产生一个对象,则编号自动递增(利用静态变量和构造方法实现)。下面给出了测试类代码和Book类的部分代码,将代码补充完整。

class Book{ int bookId; String bookName; double price; // 声明静态变量 private static int SUM; //定义静态代码块对静态变量初始化 static{ SUM=1000; } //构造方法 public Book(String bookName,double price){ this.bookName=bookName; this.price=price; bookId=SUM; SUM++; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } //定义方法求图书总册数 public static int totalBook(){ return SUM -1000; } //重写toString方法 public String toString(){ return "编号:"+bookId+"书名"+this.boohName+"价格:"+this.price; } } public class Test{ public static void main(String args[]){ Book[] books = {new Book("c语言程序设计",29.3), new Book("数据库原理",30), new Book("Java学习笔记",68)}; System.out.println("图书总数为:"+ Book.totalBook()); for(Book book:books){ System.out.println(book.toString()); } } }

####4.什么是单例设计模式?它具有什么特点?用单例设计模式设计一个太阳类Sun。 单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。 特点:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。

public class Sun { private Sun(){} private static Sun single=null; public static Sun getInstance() { if (single == null) { single = new Sun(); } return single; } }

5.理解Java参数传递机制,阅读下面的程序,运行结果是什么?说明理由。

public class Test { String str = new String("你好 "); char[] ch = { 'w','o','l','l','d' }; public static void main(String args[]) { Test test = new Test(); test.change(test.str, test.ch); System.out.print(test.str); System.out.print(test.ch); } public void change(String str, char ch[]) { str = "hello"; ch[0] = 'W'; } }

运行结果为:你好 Wolld

(二)实验总结

1.1.按照下列要求完成类的设计

(1)设计一个日期类,用于记录年、月、日,提供对日期处理的常用方法(日期输出格式xxxx-xx-xx)。 (2)设计一个职工类,该职工类至少具有下面的属性:职工号,姓名,性别,生日,工作部门,参加工作时间,设计相应的方法。 (3)设计一个部门类,包括下列属性:部门编号,部门名称,经理,设计相应方法。 (4)设计一个测试类,采用对象数组模拟一个拥有两个部门,10个职工的单位,实现对相关信息的查询功能。 问题1:输出结果错误 原因:调用类地址错误 2.设计一个计算工具类,要求: (1)为用户提供几个常见的几何体面积和体积的算法(如球的体积和表面积,圆柱体的体积和表面积,圆锥体的体积和表面积)(可以学习使用static关键字) (2)设计一个测试类,给出几个不同的圆柱体,圆锥体,球体的尺寸,用计算工具类分别求它们体积的累加和与表面积的累加和。 (3)设计一个测试类,随机产生球,圆柱、圆锥体的尺寸,模拟考试,要求用户回答它们的体积和面积,并判断用户的回答是否正确

(三)代码托管

https://git.oschina.net/hebau_cs15/java-cs01fs.git

转载于:https://www.cnblogs.com/fsaixuexi/p/6675057.html

最新回复(0)