实验四 类和对象;类的继承和派生;多态性; 接口;构造器应用
一、实验目的
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 的半径、周长和面积属性,具有返回周长、
面积的功能。
|
- package study;
- public class Trangle {
- private double a,b,c,L,S;
- public Trangle(double a,double b,double c) {
- setA(a);
- setB(b);
- setC(c);
- }
- public double getA() {
- return a;
- }
- public void setA(double a) {
- this.a = a;
- }
- public double getB() {
- return b;
- }
- public void setB(double b) {
- this.b = b;
- }
- public double getC() {
- return c;
- }
- public void setC(double c) {
- this.c = c;
- }
- public boolean isTrangle() {
- if(a>0&&b>0&&c>0)
- {
- double d=a+b-c;
- double e=a+c-b;
- double f=b+c-a;
- if(d>0&&e>0&&f>0)
- return true;
- else
- return false;
- }
- else
- return false;
- }
- public double getL() {
- if (isTrangle()) {
- L=a+b+c;
- return L;
- }
- else {
- System.out.println("error");
- return 0;
- }
- }
- public double getS() {
- if (isTrangle()) {
- double p=(a+b+c)/2;
- S=Math.sqrt(p*(p-a)*(p-b)*(p-c));
- return S;
- } else {
- System.out.println("error");
- return 0;
- }
- }
- }
|
- package study;
- public class Leder {
- private double d1,d2,h,S;
- public Leder(double d1,double d2,double h) {
- setD1(d1);
- setD2(d2);
- setH(h);
- }
- public void setD1(double d1) {
- this.d1 = d1;
- }
- public double getD1() {
- return d1;
- }
- public void setD2(double d2) {
- this.d2 = d2;
- }
- public double getD2() {
- return d2;
- }
- public void setH(double h) {
- this.h = h;
- }
- public double getH() {
- return h;
- }
- public double getS() {
- S=(d1+d2)*h/2;
- return S;
- }
- }
|
- package study;
- public class Circle {
- private double r,L,S;
- public Circle(double r) {
- setR(r);
- }
- public double getR() {
- return r;
- }
- public void setR(double r) {
- this.r = r;
- }
- public double getL() {
- L=2*r*Math.PI;
- return L;
- }
- public double getS() {
- S=r*r*Math.PI;
- return S;
- }
- }
|
测试结果:
2、 编写一个公司员工类。
- 数据成员:员工号、姓名、薪水、部门。
- 方法:①设置数据成员信息;②显示信息。
要求:利用构造方法完成设置信息,其中有四个重载的构造方法
单参:只传递员工号,则员工姓名:无名氏。薪水:0,部门:未定。双参:传递员工号,姓名,则员工薪水为 1000,部门:后勤
4 参:传递员工号,姓名,部门,薪水
无参:则均为空值
|
- package firm;
- public class employee {
- private String id,name,deparment;
- private int salary;
- public employee(String id) {
- this.id=id;
- name="无名氏";
- deparment="未定";
- salary=0;
- }
- public employee(String id,String name) {
- this.id=id;
- this.name=name;
- deparment="后勤";
- salary=1000;
- }
- public employee(String id,String name,String deparment,int salary) {
- this.id=id;
- this.name=name;
- this.deparment=deparment;
- this.salary=salary;
- }
- public employee() {
- // TODO 自动生成的构造函数存根
- }
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getDeparment() {
- return deparment;
- }
- public void setDeparment(String deparment) {
- this.deparment = deparment;
- }
- public int getSalary() {
- return salary;
- }
- public void setSalary(int salary) {
- this.salary = salary;
- }
- }
|
测试结果:
3、 完成图书馆管理系统中相关的类定义。
- 定义与编写学生 student 类,学生属性包括“学号”、“姓名”、“性别”、“专业”、“班级”。
- 定义与编写图书 book 类,图书属性包括“书名”、“ISBN 号”、“册数”。
- 登陆角色role 类,角色类包括“用户名”、“密码”、“角色类型”。
要求:1、完成以上各类中的setter 和getter 接口2、测试以上各类,并写出每个测试用例
|
- package library;
- public class student {
- private String id,name,sex,major,grade;
- public student(String id,String name,String sex,String major,String grade) {
- this.id=id;
- this.name=name;
- this.sex=sex;
- this.major=major;
- this.grade=grade;
- }
- public String getGrade() {
- return grade;
- }
- public void setGrade(String grade) {
- this.grade = grade;
- }
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getMajor() {
- return major;
- }
- public void setMajor(String major) {
- this.major = major;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public void setSex(String sex) {
- this.sex = sex;
- }
- public String getSex() {
- return sex;
- }
- }
|
- package library;
- public class book {
- private String book_name,ISBN;
- private int book_num;
- public int getBook_num() {
- return book_num;
- }
- public book(String book_name,String ISBN,int book_num) {
- // TODO 自动生成的构造函数存根
- this.book_name=book_name;
- this.ISBN=ISBN;
- this.book_num=book_num;
- }
- public void setBook_num(int book_num) {
- this.book_num = book_num;
- }
- public String getISBN() {
- return ISBN;
- }
- public void setISBN(String iSBN) {
- ISBN = iSBN;
- }
- public String getBook_name() {
- return book_name;
- }
- public void setBook_name(String book_name) {
- this.book_name = book_name;
- }
- }
|
- package library;
- public class role {
- private String name,password,type;
- public role(String name,String password,String type) {
- this.name=name;
- this.password=password;
- this.type=type;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getType() {
- return type;
- }
- public void setType(String type) {
- this.type = type;
- }
- }
|
测试结果:
4、 字符串操作。
- 从字符串“Java 技术学习班 20121205”中提取开班日期。
- 将字符串“Java 技术学习班 20121205”中的“Java”替换为“JavaEE”。
- 取出“Java 技术学习班 20121205”第八个字符。
- 清除“Java 技术学习班 20121205”中所有的“0”。
- 从任意给定的身份证号中提取此人的出生日期。
- import javax.sound.midi.Soundbank;
- public class T {
- public static void main(String[] args) {
- String str1="Java 技术学习班 20121205";
- String data1="";
- int l1=str1.length();
- for(int i=0;i<l1;i++) {
- if(str1.charAt(i)>='0'&&str1.charAt(i)<='9') {
- data1=data1+str1.charAt(i);
- }
- }
- System.out.println(str1+"的开班日期为:"+data1.substring(0,4)+"年"
- +data1.substring(4,6)+"月"+data1.substring(6)+"日");
- //
- String str2=str1.replaceAll("Java", "JavaEE");
- System.out.println(str1+"修改后为: "+str2);
- //
- char ch8=str1.charAt(7);
- System.out.println(str1+"第8个字符为:"+ch8);
- //
- String str3=str1.replaceAll("0","");
- System.out.println(str1+"清除所有的'0'结果为:"+str3);
- //
- String str4="410728200212186271";
- System.out.println("18位身份证号:"+str4+"的中国大陆居民生日为"
- +str4.substring(6, 10)+"年"+str4.substring(10,12)+"月"+str4.substring(12,14)+"日");
- }
- }
|
测试结果:
实验四 类和对象;类的继承和派生;多态性; 接口;构造器应用相关推荐
- 1~22(面向编程+ES6中的类和对象+类的继承+面向对象版tab栏切换)
1 面向对象编程介绍 1.1 两大编程思想 面向过程 面向对象 1.2 面向过程编程POP(Process-oriented programming) 面向过程就是分析出解决问题所需要的步骤,然后用函 ...
- 继承类 基类的赋值_Chapter10:继承与派生(四)
之前的文章把继承和派生的基本概念和内部原理都大致理清了.但是类可以视作是一种特殊的数据类型--它也具有转换的功能,称为转型,这一节展开讨论它,以及如何通过指针跨越权限访问不同成员的技巧. 1.类的转型 ...
- python代码学习——类与对象提升(继承、超继承,类的例题,魔术方法)
python代码学习--类与对象提升 继承 继承的特殊属性: 代码示例 方法的重写和覆盖(overrrid) 总结 超继承 继承中的初始化 多继承 例题 类的魔术方法 哈希(hash)和eq方法 bo ...
- 【Python】类与对象:封装/继承/多态
在python中如何将一些功能借鉴及实现? python模块的迁移调用?感觉还是没有形成系统化的构建? 在学习C++的时候,来了一丝灵感,python的重点不是也是类和对象吗? 本人实践python项 ...
- python的类和对象——类的静态字段番外篇
什么是静态字段 在开始之前,先上图,解释一下什么是类的静态字段(我有的时候会叫它类的静态变量,总之说的都是它.后面大多数情况可能会简称为类变量.): 我们看上面的例子,这里的money就是静态字段,首 ...
- 【Java开发语言 03】第三章 面向对象编程(面向对象与面向过程+类和对象+类成员一:属性+类成员二:方法+对象的创建和使用+封装和隐藏+构造器+关键字this,package,import)
面向对象编程 1 面向对象与面向过程 1.1 java类及类的成员 2 java语言的基本元素:类和对象 2.1 类的语法格式 2.2 创建Java自定义类 2.3 对象的创建及使用 3 类的成员之一 ...
- Python 学习笔记 系统模块 面对对象思想 类和对象 类中的方法与对象 构造函数和析构函数
一.系统模块: UTC:国际标准时间, 格林尼治天文时间,UTC+8 时间戳:指定时间距离1970.1.1 00:00:00的秒数 time:时间 datetime:日期 calendar:万年历 o ...
- java类对象实验问题_Java类与对象实验答案
Java类与对象实验答案Tag内容描述: 1.Java实验报告 计科.信工版2013-2014-2 实验报告 一.实验项目:类与对象 二.实验目的: 1. 学会使用类来封装对象的属性和功能 2. 掌握 ...
- Kotlin学习笔记 第二章 类与对象 第三节接口 第四节 函数式接口
参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...
- Py函数直接传入root是啥意思_阿里云python课程笔记(四):函数amp;类和对象
接阿里云python课程笔记(三):数据结构 我们讨论一下python中的深拷贝和浅拷贝 dic1 = {'user': 'lsgogroup', 'num': [1, 2, 3]}# 引用对象dic ...
最新文章
- hibernate 中set的3个属性(inverse,cascade,order_by)
- Android之BaseAdapter使用
- 程序员所应具备的品质
- Y_CLIENT_QHD_504 role in GM6 ZSAP_CRM_BCR_SALESREP_DAIDE
- python获得字符出现频率,并用字典保存;获得字典最大value对应的key值
- 十五开源的Andr​​oid(2D或3D)Android开发游戏引擎
- 状态管理技术~~Session
- java selenium环境安装
- 基于Spring Security的认证授权_自定义登录页面_Spring Security OAuth2.0认证授权---springcloud工作笔记127
- 数据库原理—关系模型的数据操作(八)
- Nginx 限制单个IP的并发连接数及对每个连接速度(限速)
- Boost Log : Trivial logging with filters
- TransE如何进行向量更新?
- 31个省环境统计年鉴面板数据(2003-2019年)
- python3传智播客_3.Ubuntu安装以及配置(传智播客.黑马程序员python学科)
- matlab中dzdx,MatConvnet工具箱使用手册翻译理解一
- consul - Go服务发现、配置管理中心服务
- Q-learning原理及其实现方法
- Centos7安装Docker,阿里源,网易镜像
- 为什么大型高难度工程的首选支模架是盘扣架?
热门文章
- 图灵奖得主(麦卡锡\霍尔)
- web前端攻城狮 学习笔记——HTML基础
- start with connect by prior的使用方法
- 微信小程序自定义组件使用阿里矢量图标库图标
- 如何区分本地用户和域用户?
- Photo Album: 2008年5月-三亚爱琴海岸康年度假村-day4
- js 数组entries迭代方法
- 计算机学生如何创新,试论如何在计算机教育中培养学生的创新能力
- 汇编c语言基础教程编程达人,编程达人 《汇编、C语言基础教程》第一章 进制1.6 逻辑运算(连载)...
- 开水果店的水果怎么保鲜,新手开水果店水果保鲜方法