实验四 类和对象;类的继承和派生;多态性; 接口;构造器应用

一、实验目的

1、 掌握类与对象的关系;

2、 掌握类的定义;

3、 掌握对象的声明及使用;

4、 掌握构造方法的概念及调用时机;

5、 掌握构造方法的重载;

6、 掌握匿名对象的使用。

二、实验学时

2 学时

三、实验类型

验证性实验

四、实验需求

1、硬件

每位学生配备计算机一台

2、软件

Windows XP 操作系统,JDK,eclipse,MySQL

3、网络无

4、工具

五、实验理论与预备知识

1、 类与对象的关系;

2、 类的定义;

3、 对象的声明及使用;

4、 构造方法的概念及调用时机;

5、 构造方法的重载;

6、 匿名对象的使用。

六、实验内容与结果

1、 编写一个应用程序,该程序中有 3 个类:Trangle、Leder 和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。

要求:Trangle 类具有类型为double 的三个边,以及周长、面积属性,Trangle 类具有返回周长、面积以及修改三个边的功能。另外,Trangle 类还具有一个boolean 型的属性,该属性用

来判断三个属能否构成一个三角形。Lader 类具有类型double 的上底、下底、高、面积属性,

具有返回面积的功能。Circle 类具有类型为double 的半径、周长和面积属性,具有返回周长、

面积的功能。

  1. package study;
  2. public class Trangle {
  3. private double a,b,c,L,S;
  4. public Trangle(double a,double b,double c) {
  5. setA(a);
  6. setB(b);
  7. setC(c);
  8. }
  9. public double getA() {
  10. return a;
  11. }
  12. public void setA(double a) {
  13. this.a = a;
  14. }
  15. public double getB() {
  16. return b;
  17. }
  18. public void setB(double b) {
  19. this.b = b;
  20. }
  21. public double getC() {
  22. return c;
  23. }
  24. public void setC(double c) {
  25. this.c = c;
  26. }
  27. public boolean isTrangle() {
  28. if(a>0&&b>0&&c>0)
  29. {
  30. double d=a+b-c;
  31. double e=a+c-b;
  32. double f=b+c-a;
  33. if(d>0&&e>0&&f>0)
  34. return true;
  35. else
  36. return false;
  37. }
  38. else
  39. return false;
  40. }
  41. public double getL() {
  42. if (isTrangle()) {
  43. L=a+b+c;
  44. return L;
  45. }
  46. else {
  47. System.out.println("error");
  48. return 0;
  49. }
  50. }
  51. public double getS() {
  52. if (isTrangle()) {
  53. double p=(a+b+c)/2;
  54. S=Math.sqrt(p*(p-a)*(p-b)*(p-c));
  55. return S;
  56. } else {
  57. System.out.println("error");
  58. return 0;
  59. }
  60. }
  61. }
  1. package study;
  2. public class Leder {
  3. private double d1,d2,h,S;
  4. public Leder(double d1,double d2,double h) {
  5. setD1(d1);
  6. setD2(d2);
  7. setH(h);
  8. }
  9. public void setD1(double d1) {
  10. this.d1 = d1;
  11. }
  12. public double getD1() {
  13. return d1;
  14. }
  15. public void setD2(double d2) {
  16. this.d2 = d2;
  17. }
  18. public double getD2() {
  19. return d2;
  20. }
  21. public void setH(double h) {
  22. this.h = h;
  23. }
  24. public double getH() {
  25. return h;
  26. }
  27. public double getS() {
  28. S=(d1+d2)*h/2;
  29. return S;
  30. }
  31. }
  1. package study;
  2. public class Circle {
  3. private double r,L,S;
  4. public Circle(double r) {
  5. setR(r);
  6. }
  7. public double getR() {
  8. return r;
  9. }
  10. public void setR(double r) {
  11. this.r = r;
  12. }
  13. public double getL() {
  14. L=2*r*Math.PI;
  15. return L;
  16. }
  17. public double getS() {
  18. S=r*r*Math.PI;
  19. return S;
  20. }
  21. }

测试结果:

2、 编写一个公司员工类。

  1. 数据成员:员工号、姓名、薪水、部门。
  2. 方法:①设置数据成员信息;②显示信息。

要求:利用构造方法完成设置信息,其中有四个重载的构造方法

单参:只传递员工号,则员工姓名:无名氏。薪水:0,部门:未定。双参:传递员工号,姓名,则员工薪水为 1000,部门:后勤

4 参:传递员工号,姓名,部门,薪水

无参:则均为空值

  1. package firm;
  2. public class employee {
  3. private String id,name,deparment;
  4. private int salary;
  5. public employee(String id) {
  6. this.id=id;
  7. name="无名氏";
  8. deparment="未定";
  9. salary=0;
  10. }
  11. public employee(String id,String name) {
  12. this.id=id;
  13. this.name=name;
  14. deparment="后勤";
  15. salary=1000;
  16. }
  17. public employee(String id,String name,String deparment,int salary) {
  18. this.id=id;
  19. this.name=name;
  20. this.deparment=deparment;
  21. this.salary=salary;
  22. }
  23. public employee() {
  24. // TODO 自动生成的构造函数存根
  25. }
  26. public String getId() {
  27. return id;
  28. }
  29. public void setId(String id) {
  30. this.id = id;
  31. }
  32. public String getName() {
  33. return name;
  34. }
  35. public void setName(String name) {
  36. this.name = name;
  37. }
  38. public String getDeparment() {
  39. return deparment;
  40. }
  41. public void setDeparment(String deparment) {
  42. this.deparment = deparment;
  43. }
  44. public int getSalary() {
  45. return salary;
  46. }
  47. public void setSalary(int salary) {
  48. this.salary = salary;
  49. }
  50. }

测试结果:

3、 完成图书馆管理系统中相关的类定义。

  1. 定义与编写学生 student 类,学生属性包括“学号”、“姓名”、“性别”、“专业”、“班级”。
  2. 定义与编写图书 book 类,图书属性包括“书名”、“ISBN 号”、“册数”。
  3. 登陆角色role 类,角色类包括“用户名”、“密码”、“角色类型”。

要求:1、完成以上各类中的setter 和getter 接口2、测试以上各类,并写出每个测试用例

  1. package library;
  2. public class student {
  3. private String id,name,sex,major,grade;
  4. public student(String id,String name,String sex,String major,String grade) {
  5. this.id=id;
  6. this.name=name;
  7. this.sex=sex;
  8. this.major=major;
  9. this.grade=grade;
  10. }
  11. public String getGrade() {
  12. return grade;
  13. }
  14. public void setGrade(String grade) {
  15. this.grade = grade;
  16. }
  17. public String getId() {
  18. return id;
  19. }
  20. public void setId(String id) {
  21. this.id = id;
  22. }
  23. public String getMajor() {
  24. return major;
  25. }
  26. public void setMajor(String major) {
  27. this.major = major;
  28. }
  29. public String getName() {
  30. return name;
  31. }
  32. public void setName(String name) {
  33. this.name = name;
  34. }
  35. public void setSex(String sex) {
  36. this.sex = sex;
  37. }
  38. public String getSex() {
  39. return sex;
  40. }
  41. }
  1. package library;
  2. public class book {
  3. private String book_name,ISBN;
  4. private int book_num;
  5. public int getBook_num() {
  6. return book_num;
  7. }
  8. public book(String book_name,String ISBN,int book_num) {
  9. // TODO 自动生成的构造函数存根
  10. this.book_name=book_name;
  11. this.ISBN=ISBN;
  12. this.book_num=book_num;
  13. }
  14. public void setBook_num(int book_num) {
  15. this.book_num = book_num;
  16. }
  17. public String getISBN() {
  18. return ISBN;
  19. }
  20. public void setISBN(String iSBN) {
  21. ISBN = iSBN;
  22. }
  23. public String getBook_name() {
  24. return book_name;
  25. }
  26. public void setBook_name(String book_name) {
  27. this.book_name = book_name;
  28. }
  29. }
  1. package library;
  2. public class role {
  3. private String name,password,type;
  4. public role(String name,String password,String type) {
  5. this.name=name;
  6. this.password=password;
  7. this.type=type;
  8. }
  9. public String getName() {
  10. return name;
  11. }
  12. public void setName(String name) {
  13. this.name = name;
  14. }
  15. public String getPassword() {
  16. return password;
  17. }
  18. public void setPassword(String password) {
  19. this.password = password;
  20. }
  21. public String getType() {
  22. return type;
  23. }
  24. public void setType(String type) {
  25. this.type = type;
  26. }
  27. }

测试结果:

4、 字符串操作。

  1. 从字符串“Java 技术学习班 20121205”中提取开班日期。
  2. 将字符串“Java 技术学习班 20121205”中的“Java”替换为“JavaEE”。
  3. 取出“Java 技术学习班 20121205”第八个字符。
  4. 清除“Java 技术学习班 20121205”中所有的“0”。
  5. 从任意给定的身份证号中提取此人的出生日期。
  1. import javax.sound.midi.Soundbank;
  2. public class T {
  3. public static void main(String[] args) {
  4. String str1="Java 技术学习班 20121205";
  5. String data1="";
  6. int l1=str1.length();
  7. for(int i=0;i<l1;i++) {
  8. if(str1.charAt(i)>='0'&&str1.charAt(i)<='9') {
  9. data1=data1+str1.charAt(i);
  10. }
  11. }
  12. System.out.println(str1+"的开班日期为:"+data1.substring(0,4)+"年"
  13. +data1.substring(4,6)+"月"+data1.substring(6)+"日");
  14. //
  15. String str2=str1.replaceAll("Java", "JavaEE");
  16. System.out.println(str1+"修改后为: "+str2);
  17. //
  18. char ch8=str1.charAt(7);
  19. System.out.println(str1+"第8个字符为:"+ch8);
  20. //
  21. String str3=str1.replaceAll("0","");
  22. System.out.println(str1+"清除所有的'0'结果为:"+str3);
  23. //
  24. String str4="410728200212186271";
  25. System.out.println("18位身份证号:"+str4+"的中国大陆居民生日为"
  26. +str4.substring(6, 10)+"年"+str4.substring(10,12)+"月"+str4.substring(12,14)+"日");
  27. }
  28. }

测试结果:

实验四 类和对象;类的继承和派生;多态性; 接口;构造器应用相关推荐

  1. 1~22(面向编程+ES6中的类和对象+类的继承+面向对象版tab栏切换)

    1 面向对象编程介绍 1.1 两大编程思想 面向过程 面向对象 1.2 面向过程编程POP(Process-oriented programming) 面向过程就是分析出解决问题所需要的步骤,然后用函 ...

  2. 继承类 基类的赋值_Chapter10:继承与派生(四)

    之前的文章把继承和派生的基本概念和内部原理都大致理清了.但是类可以视作是一种特殊的数据类型--它也具有转换的功能,称为转型,这一节展开讨论它,以及如何通过指针跨越权限访问不同成员的技巧. 1.类的转型 ...

  3. python代码学习——类与对象提升(继承、超继承,类的例题,魔术方法)

    python代码学习--类与对象提升 继承 继承的特殊属性: 代码示例 方法的重写和覆盖(overrrid) 总结 超继承 继承中的初始化 多继承 例题 类的魔术方法 哈希(hash)和eq方法 bo ...

  4. 【Python】类与对象:封装/继承/多态

    在python中如何将一些功能借鉴及实现? python模块的迁移调用?感觉还是没有形成系统化的构建? 在学习C++的时候,来了一丝灵感,python的重点不是也是类和对象吗? 本人实践python项 ...

  5. python的类和对象——类的静态字段番外篇

    什么是静态字段 在开始之前,先上图,解释一下什么是类的静态字段(我有的时候会叫它类的静态变量,总之说的都是它.后面大多数情况可能会简称为类变量.): 我们看上面的例子,这里的money就是静态字段,首 ...

  6. 【Java开发语言 03】第三章 面向对象编程(面向对象与面向过程+类和对象+类成员一:属性+类成员二:方法+对象的创建和使用+封装和隐藏+构造器+关键字this,package,import)

    面向对象编程 1 面向对象与面向过程 1.1 java类及类的成员 2 java语言的基本元素:类和对象 2.1 类的语法格式 2.2 创建Java自定义类 2.3 对象的创建及使用 3 类的成员之一 ...

  7. Python 学习笔记 系统模块 面对对象思想 类和对象 类中的方法与对象 构造函数和析构函数

    一.系统模块: UTC:国际标准时间, 格林尼治天文时间,UTC+8 时间戳:指定时间距离1970.1.1 00:00:00的秒数 time:时间 datetime:日期 calendar:万年历 o ...

  8. java类对象实验问题_Java类与对象实验答案

    Java类与对象实验答案Tag内容描述: 1.Java实验报告 计科.信工版2013-2014-2 实验报告 一.实验项目:类与对象 二.实验目的: 1. 学会使用类来封装对象的属性和功能 2. 掌握 ...

  9. Kotlin学习笔记 第二章 类与对象 第三节接口 第四节 函数式接口

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

  10. Py函数直接传入root是啥意思_阿里云python课程笔记(四):函数amp;类和对象

    接阿里云python课程笔记(三):数据结构 我们讨论一下python中的深拷贝和浅拷贝 dic1 = {'user': 'lsgogroup', 'num': [1, 2, 3]}# 引用对象dic ...

最新文章

  1. hibernate 中set的3个属性(inverse,cascade,order_by)
  2. Android之BaseAdapter使用
  3. 程序员所应具备的品质
  4. Y_CLIENT_QHD_504 role in GM6 ZSAP_CRM_BCR_SALESREP_DAIDE
  5. python获得字符出现频率,并用字典保存;获得字典最大value对应的key值
  6. 十五开源的Andr​​oid(2D或3D)Android开发游戏引擎
  7. 状态管理技术~~Session
  8. java selenium环境安装
  9. 基于Spring Security的认证授权_自定义登录页面_Spring Security OAuth2.0认证授权---springcloud工作笔记127
  10. 数据库原理—关系模型的数据操作(八)
  11. Nginx 限制单个IP的并发连接数及对每个连接速度(限速)
  12. Boost Log : Trivial logging with filters
  13. TransE如何进行向量更新?
  14. 31个省环境统计年鉴面板数据(2003-2019年)
  15. python3传智播客_3.Ubuntu安装以及配置(传智播客.黑马程序员python学科)
  16. matlab中dzdx,MatConvnet工具箱使用手册翻译理解一
  17. consul - Go服务发现、配置管理中心服务
  18. Q-learning原理及其实现方法
  19. Centos7安装Docker,阿里源,网易镜像
  20. 为什么大型高难度工程的首选支模架是盘扣架?

热门文章

  1. 图灵奖得主(麦卡锡\霍尔)
  2. web前端攻城狮 学习笔记——HTML基础
  3. start with connect by prior的使用方法
  4. 微信小程序自定义组件使用阿里矢量图标库图标
  5. 如何区分本地用户和域用户?
  6. Photo Album: 2008年5月-三亚爱琴海岸康年度假村-day4
  7. js 数组entries迭代方法
  8. 计算机学生如何创新,试论如何在计算机教育中培养学生的创新能力
  9. 汇编c语言基础教程编程达人,编程达人 《汇编、C语言基础教程》第一章 进制1.6 逻辑运算(连载)...
  10. 开水果店的水果怎么保鲜,新手开水果店水果保鲜方法