1903021126-申文骏-Java第十一周作业-Java中继承、多态及抽象类的使用
项目 | 内容 |
课程班级博客链接 | 19级信计班(本) |
作业要求链接 | 第十一周作业 |
博客名称 | 1903021126-申文骏-Java第十一周作业-Java中继承、多态及抽象类的使用 |
作业要求 | 每道题要有题目,代码(使用插入代码,不会插入代码的自己查资料解决,不要直接截图代码!!),截图(只截运行结果)。 |
题目1:
类Person定义了姓名name,出生年份birthYear,其子类Graduate在继承父类的基础上新增定义了成绩gpa、毕业年份graduateYear。编写测试类,输出毕业生的姓名、年龄、毕业年份、成绩。
- 提示:父类要有构造方法,子类通过super调用父类构造方法。
代码:
父类:
package edu.xinji.week11; public abstract class Person {
public String name;
public double birthYear; public Person(String name, double birthYear) {
super();
this.name = name;
this.birthYear = birthYear;
}
public String getMessage() {
return "姓名:" +name;
} }
子类:
package edu.xinji.week11; public class Graduate extends Person {
int gpa;
int graduateYear;
int nowYear;
public Graduate(String name, double birthYear, int gpa,int graduateYear,int nowYear) {
super(name, birthYear);
// TODO Auto-generated constructor stub
this.nowYear = nowYear;
this.gpa = gpa;
this.graduateYear = graduateYear;
}
public String getMessage() {
return super.getMessage()+"\n毕业年份:"+graduateYear+"\n成绩:"+gpa;
}
public double age() {
double nowYear = 2022;
return nowYear-birthYear;
}
}
测试类:
package edu.xinji.week11; public class Test extends Person { public static void main(String[] args) {
// TODO Auto-generated method stub
Graduate g = new Graduate("刘仁",2001,90,2024,2023);
System.out.println("毕业生信息为:"+g.getMessage());
System.out.println("年龄为:"+g.age());
} }
结果截图:
题目2:
- 定义一个基本类Shape,有一个draw方法,定义三个类Circle(圆)、Triangle(三角形)、Square(正方形)都继承于Shape。在测试类中定义一个方法doStuff,传入基本类shape为参数,并调用draw方法。使用父类Shape创建三个类Circle、 Triangle、Square的实例对象并分别作为参数传入draw方法中。
- 提示:多态
Shape类:
package edu.xinji.week11; public class Shape { void draw() {
System.out.println();
} }
Circle类:
package edu.xinji.week11; public class Circle extends Shape {
void draw() {
System.out.println("Calling Circle.draw()");
}
public Circle() {
// TODO Auto-generated constructor stub
} }
Triangle类:
package edu.xinji.week11; public class Triangle extends Shape {
void draw() {
System.out.println("Calling Triangle.draw()");
}
public Triangle() {
// TODO Auto-generated constructor stub
} }
Square类:
package edu.xinji.week11; public class Square extends Shape {
void draw() {
System.out.println("Calling Square.draw()");
}
public Square() {
// TODO Auto-generated constructor stub
}
}
测试类:
package edu.xinji.week11; public class test2 extends Shape {
static void doStuff(Shape s){
s.draw();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Shape c=new Circle();
Shape s=new Square();
Shape t=new Triangle();
doStuff(c);
doStuff(s);
doStuff(t);
// TODO Auto-generated method stub }
}
结果截图:
题目3:
所有的动物都有一个父类Animal,再定义两个子类Bird(鸟)和Dog(狗)继承自Animal,并实现父类中的bark(叫唤)方法。
- 提示:抽象
父类:
package edu.xinji.week11; public abstract class Animal {
abstract void bark();
}
Bird类:
public class Bird extends Animal { @Override
void bark() {
// TODO Auto-generated method stub
System.out.println("小鸟喳喳喳");
} }
Dog类:
package edu.xinji.week11; public class Dog extends Animal { @Override
public void bark() {
// TODO Auto-generated method stub
System.out.println("小狗汪汪汪");
} }
测试类:
package edu.xinji.week11; public class Test3 extends Animal { @Override
void bark() {
// TODO Auto-generated method stub } public static void main(String[] args) {
// TODO Auto-generated method stub
Animal a1 = new Bird();
Animal a2 = new Dog();
a1.bark();
a2.bark();
} }
结果截图:
题目4:
不同几何图形的面积计算公式是不一样的,可是,它们具有的特性是一样的,都具有长和宽这两个属性,也都具有面积计算的方法。根据抽象的概念计算长方形的面积和三角形的面积。
- 提示:抽象
Area类:
package edu.xinji.week11; public abstract class Area {
public int width;
public int height;
public Area(int width, int height) {
super();
this.width = width;
this.height = height;
}
public abstract double area();
}
长方形类:
package edu.xinji.week11; public class Square2 extends Area {
public Square2(int width, int height) {
super(width, height);
// TODO Auto-generated constructor stub
}
@Override
public double area() {
// TODO Auto-generated method stub
return width*height;
} }
三角形类:
package edu.xinji.week11; public class Triangle2 extends Area {
public Triangle2(int width, int height) {
super(width, height);
// TODO Auto-generated constructor stub
}
@Override
public double area() {
// TODO Auto-generated method stub
return 0.5*width*height;
} }
测试类:
package edu.xinji.week11; public class Test4 extends Area { public static void main(String[] args) {
// TODO Auto-generated method stub
Square2 s = new Square2(4,6);
System.out.println("长方形面积为:"+s.area());
Triangle2 t = new Triangle2(6,12);
System.out.println("三角形面积为:"+t.area());
} }
结果截图:
拓展阅读心得:
1、 java中的每一个类都有一个父类,有的显性的表示,有的则隐性表示,但都是继承一Objec,他是所有java类的父类。
多态分类:
1)对象的多态。(父对象引用指向子类实例)
2)方法的多态。(分为方法的重载和重写或者覆盖。重载是发生在同一类中,函数的名字相同,但是函数的参数个数,和参数类型都是不一样的。重写发生在两个类中,父类的方法,在子类中重新写。重写的函数名字和参数列表完全一样,重写的函数只能抛出比之前更小的异常,访问权限只能比之前的更大。)
3、父类对象指向子类实例,只能调用父类和子类中相同的方法,子类中新添加的方法并不能调用,若要调用就要有强制类型转换。
1903021126-申文骏-Java第十一周作业-Java中继承、多态及抽象类的使用的更多相关文章
- 1903021121-刘明伟-java十一周作业-java面向对象编程
项目 内容 课程班级博客链接 19级信计班(本) 作业要求链接 第十一周作业 博客名称 1903021121-刘明伟-java十一周作业-java面向对象 要求 每道题要有题目,代码(使用插入代码,不 ...
- 1903021121—刘明伟—Java第六周作业—java类
项目 内容 课程班级博客链接 19信计班(本) 作业要求链接 第6周作业 扩展阅读 java面向对象的概念和定义 作业要求 每道题要有题目,代码,截图(只截运行结果). 题目1: 一个Phone ...
- 2017-2018-2 20179205《网络攻防技术与实践》第十一周作业 SQL注入攻击与实践
<网络攻防技术与实践>第十一周作业 SQL注入攻击与实践 1.研究缓冲区溢出的原理,至少针对两种数据库进行差异化研究 缓冲区溢出原理 在计算机内部,输入数据通常被存放在一个临时空间内, ...
- JAVA第三周作业(从键盘输入若干数求和)
JAVA第三周作业(从键盘输入若干数求和) 在新的一周,我学习了JAVA的IO编程.下面的代码实现了从键盘输入若干数求和的目标.import java.util.Scanner; public cla ...
- 2017-2018-1 JAVA实验站 第二周作业
2017-2018-1 JAVA实验站 第二周作业 小组成员: 组长 20162318张泰毓 成员 20162303石亚鑫 20162304张浩林 20162307张韵琪 20162321王彪 201 ...
- 《Linux内核原理与设计》第十一周作业 ShellShock攻击实验
<Linux内核原理与设计>第十一周作业 ShellShock攻击实验 分组: 和20179215袁琳完成实验及博客攥写 实验内容: Bash中发现了一个严重漏洞shellshock, ...
- 2019-2020-1 20199329《Linux内核原理与分析》第十一周作业
<Linux内核原理与分析>第十一周作业 一.本周内容概述: 学习linux安全防护方面的知识 完成实验楼上的<ShellShock 攻击实验> 二.本周学习内容: 1.学习& ...
- 2020-2021-1 20209307 《Linux内核原理与分析》第十一周作业
这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第十一周作业> 这个作业的目标 ...
- 1903021116—吉琛—Java第七周作业—客户类测试
项目 内容 课程班级博客链接 19信计班 这个作业要求链接 第七周作业链接 博客名称 学号-姓名-Java第七周作业-客户类测试 要求 每道题要有题目,代码(使用插入代码,不会插入代码的自己查资料解决 ...
- 1903021116—吉琛—Java第六周作业—类的定义
项目 内容 课程班级博客链接 19信计班 这个作业要求链接 第六周作业链接 java面向对象的概念和定义 博客名称 学号-姓名-Java第六周作业-题目自拟 要求 每道题要有题目,代码(使用插入代码, ...
随机推荐
- Jenkins+Docker 实现一键自动化部署项目!
博主分享的非常好:https://mp.weixin.qq.com/s/a0JOuiqLsUMcQSEjZ4uGTg 本文章实现最简单全面的Jenkins+docker+springboot 一键自动 ...
- javascript获取浏览器窗口分辨率|浏览器全屏分辨率|屏幕分辨率
浏览器窗口分辨率指显示网页的区域,在PC端由于浏览器窗口大小可调节,这个值是可变的.在手机等移动端浏览器窗口大小不可调节,宽度值是固定的,但竖屏和横屏切换会改变. 浏览器全屏分辨率是指浏览器启用全屏显 ...
- Windows 10 与Windows11 功能比较(红字为不同点)
Windows 10 与Windows11 功能比较(红字为不同点)
- 通过抓取pintpoint2的页面信息把数据存入数据库python3
目标:对生产环境的服务质量进行量化, 解决办法:把pintpoint2里的数据转存入mysql数据库,作成报表,目前支持总请求数,错误请求数,中位数,平均数,95值(每分钟一次定时任务),其它指标可以 ...
- Unity实现手机录音功能
using UnityEngine;using System.Collections;public class MicPhoneScripts : MonoBehaviour{ private ...
- debian/ubuntu下安装nodejs npm
举例:在 /home 目录下 wget https://nodejs.org/dist/v16.17.1/node-v16.17.1-linux-x64.tar.xz nodejs官网下载地址,目前最 ...
- IDEA debug时拷贝数据 Evaluate Expression窗口
今日份鸡汤:别人再好,也是别人.自己再不堪,也是自己,独一无二的自己.只要努力去做最好的自己,一生足矣.为自己的人生负责,为自己的梦想买单. 用IDEA调试时候经常需要拷贝变量值出来排查,特别是数据结 ...
- centos7 双网卡同网段双网关配置
需求: #1.服务器为双网卡: #2.网卡1为互联网 172.16.137.99/24/254 #3.网卡2为旅游专网 172.16.137.97/24/1 #4.互联网路由器为172.16.137. ...
- 算法图解 - 第1章 二分查找 与大O
例子:猜一个1到100之间的数,最多猜几次? # 最糟糕的猜法:一个一个的猜 - 最多查找次数: n - 运行时间: O(n) # 二分查找:在有序的一组数中猜一个数,对半猜.找到返回其位置(索引) ...
- Blob下载
下载方式 const aBlob = new Blob( array, options ); export function downLoadFile(data: ArrayBuffer, fileN ...