实验四 类和对象; 类的继承和派生;多态性; 接口;构造器应用
一、实验目的
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 的上底、下底、高、面积属性 |
package xxbb;class Trangle{double sideA,sideB,sideC,area,length;boolean boo;public Trangle(double a, double b, double c){sideA=a;sideB=b;sideC=c;if(a+b>c&&a+c>b&&b+c>a) boo=true;else boo=false;}double getLength(){if(boo) {length=sideA+sideB+sideC;return length;}else {System.out.println("不是一个三角形,不能计算周长");return 0;}}public double getArea() {if(boo) {double p=(sideA+sideB+sideC)/2.0;area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));return area;}else {System.out.println("不是一个三角形,不能计算面积");return 0;}}public void setABC(double a,double b,double c) {sideA=a;sideB=b;sideC=c;if(a+b>c&&a+c>b&&b+c>a) boo=true;else boo=false;}}class Lader{double above, bottom,heigth,area;Lader(double a,double b,double h){above=a;bottom=b;heigth=h;}public double getArea(){area=(above+bottom)/2*heigth;return area;}}class Circle{double radius,area;Circle(double r){radius=r;}double getArea(){return 3.14*radius*radius;}double getLength(){return 2*3.14*radius;}}public class zyy {public static void main(String[] args) {double length,area;Circle circle=null;Trangle trangle;Lader lader;circle=new Circle(10);trangle=new Trangle(3,4,5);lader=new Lader(3,4,10);length=circle.getLength();System.out.println("圆的周长:"+length);area=circle.getArea();System.out.println("圆的面积:"+area);length=trangle.getLength();System.out.println("三角形的周长:"+length);area=circle.getArea();System.out.println("三角形的面积:"+area);area=lader.getArea();System.out.println("梯形的面积::"+area);trangle.setABC(12, 34, 1);area=trangle.getArea();length=trangle.getLength();}}
2 、 编写一个公司员工类。
(1) 数据成员:员工号、姓名、薪水、部门。
(2) 方法: ①设置数据成员信息; ②显示信息。
要求:利用构造方法完成设置信息,其中有四个重载的构造方法 单参:只传递员工号,则员工姓名:无名氏。薪水: 0,部门:未定。 双参:传递员工号,姓名,则员工薪水为 1000,部门:后勤 4 参:传递员工号,姓名,部门,薪水 无参:则均为空值 |
package xxbb;class Employee{private String num;private String name;private float salary;private String department;// 无参public Employee(){}// 单参public Employee(String num) {this.num=num;this.name="无名氏";this.salary=0;this.department="未定";}// 双参public Employee(String num ,String name ) {this.num=num;this.name=name;this.department="后勤";this.salary=1000;}// 4参public Employee(String num,String name,float salary,String department) {this.num=num;this.name=name;this.department=department;this.salary=salary;}public void print(){System.out.println("员工编号为:"+num);System.out.println("员工姓名:"+name);System.out.println("部门:"+department);System.out.println("薪水:"+salary);System.out.println();}}public class two {public static void main(String[] args) {Employee emp1=new Employee();emp1.print();Employee emp2=new Employee("010101");emp2.print();Employee emp3=new Employee("020202","张三");emp3.print();Employee emp4=new Employee("030303","李四",3000,"人资");emp4.print();}}
3 、 完成图书馆管理系统中相关的类定义。
(1) 定义与编写学生 student 类, 学生属性包括“学号”、“姓名”、“性别”、“专业”、“班级”。
(2) 定义与编写图书 book 类, 图书属性包括“书名”、“ISBN 号”、“册数”。
(3) 登陆角色 role 类,角色类包括“用户名”、“密码”、“角色类型”。
要求: 1、完成以上各类中的 setter 和 getter 接口 2、测试以上各类,并写出每个测试用例 |
package xxbb;class student{private String nom;private String name;private String sex;private String spe;private String gra;public student(String nom,String name,String sex,String spe,String gra) {this.setNom(nom);this.setName(name);this.setSex(sex);this.setSpe(spe);this.setGra(gra);}public String getNom() {return nom;}public void setNom(String nom) {this.nom=nom;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getSpe() {return spe;}public void setSpe(String spe) {this.spe=spe;}public String getGra() {return gra;}public void setGra(String gra) {this.gra=gra;}public void print1(){System.out.println("学号为:"+nom);System.out.println("学生姓名:"+name);System.out.println("性别:"+sex);System.out.println("专业:"+spe);System.out.println("班级:"+gra);System.out.println();}}class book{private String bookname;private String isbn;private String sum;public book(String bookname,String isbn,String sum) {this.setBookname(bookname);this.setIsbn(isbn);this.setSum(sum);}public String getBookname() {return bookname;}public void setBookname(String bookname) {this.bookname=bookname;}public String getIsbn() {return isbn;}public void setIsbn(String isbn) {this.isbn=isbn;}public String getSum() {return sum;}public void setSum(String sum) {this.sum=sum;}public void print2(){System.out.println("书名为:"+bookname);System.out.println("ISBN:"+isbn);System.out.println("册数:"+sum);System.out.println();}}class role{private String username;private String password;private String bleed;public role(String username,String password,String bleed) {this.setUsername(username);this.setPassword(password);this.setBleed(bleed);}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 String getBleed() {return bleed;}public void setBleed(String bleed) {this.bleed=bleed;}public void print3(){System.out.println("用户名为:"+username);System.out.println("密码:"+password);System.out.println("角色类型:"+bleed);System.out.println();}}public class zyy {public static void main(String[] args) {student stu=new student("017","赵永源","男","软件工程","2020级");stu.print1();book bo=new book("Java开发实战经典","123456","100");bo.print2();role ro=new role("yuan","123456","学生");ro.print3();}}
4 、 字符串操作。
(1) 从字符串“Java 技术学习班 20121205”中提取开班日期。
(2) 将字符串“Java 技术学习班 20121205”中的“Java”替换为“JavaEE”。
(3) 取出“Java 技术学习班 20121205”第八个字符。
(4) 清除“Java 技术学习班 20121205”中所有的“0”。
(5) 从任意给定的身份证号中提取此人的出生日期。
package xxbb;import java.util.Scanner;public class yuan {public static void main(String[] args) {String str1="Java 技术学习班 20121205";System.out.println(str1.substring(10));String newStr1=str1.replace("Java","JavaEE");System.out.println(newStr1);String str2="Java 技术学习班 20121205";System.out.println(str2.charAt(8));String newstr2=str2.replace("0","");System.out.println(newstr2);Scanner sc=new Scanner(System.in);String s=sc.nextLine();if(s.length()!=18) {System.out.println("请输入正确的身份证号。");}else{String s1=s.substring(6,14);System.out.println(s1);}}}
实验四 类和对象; 类的继承和派生;多态性; 接口;构造器应用相关推荐
- 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 ...
最新文章
- FD.io/VPP — ACL
- C++函数模板(二)引用
- maven 之dependencyManagement 和 pluginManagement
- ADS中startup.s文件启动分析
- Python笔记-对字符串进行URL编码及解码
- 没有足够的值_了解食物的GI值,让你的减脂效率翻倍
- VMware虚拟机安装系统
- pso粒子群优化算法+MATLAB代码
- 查看字节码的插件jclasslib设置成英文
- 3DMax 2014中文版安装破解教程
- 2015-4-11 美术馆 红楼 景山 香山 西单
- SharePoint传出电子邮件配置
- 标签助手(TagHelper)
- strtolower() 把字符串转换为小写字母
- 一些基于 D3.js 的图表库
- 学籍(学生)信息管理系统
- 小米天气api html,小米天气app
- 仿百度首页登陆框拖拽效果(可视窗口内拖动)
- Java项目:JSP在线水果销售商城
- 独家:微贷网上市细节曝光!2018年上半年净利达3.63亿