项目 内容
课程班级博客链接 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类的父类。

 2、多态是一种事物,多种形态。用名字一样的代码根据要求的不同,干不一样的事情。

多态分类:

1)对象的多态。(父对象引用指向子类实例)

2)方法的多态。(分为方法的重载和重写或者覆盖。重载是发生在同一类中,函数的名字相同,但是函数的参数个数,和参数类型都是不一样的。重写发生在两个类中,父类的方法,在子类中重新写。重写的函数名字和参数列表完全一样,重写的函数只能抛出比之前更小的异常,访问权限只能比之前的更大。)

3、父类对象指向子类实例,只能调用父类和子类中相同的方法,子类中新添加的方法并不能调用,若要调用就要有强制类型转换。

1903021126-申文骏-Java第十一周作业-Java中继承、多态及抽象类的使用的更多相关文章

  1. 1903021121-刘明伟-java十一周作业-java面向对象编程

    项目 内容 课程班级博客链接 19级信计班(本) 作业要求链接 第十一周作业 博客名称 1903021121-刘明伟-java十一周作业-java面向对象 要求 每道题要有题目,代码(使用插入代码,不 ...

  2. 1903021121—刘明伟—Java第六周作业—java类

    项目   内容 课程班级博客链接  19信计班(本) 作业要求链接 第6周作业 扩展阅读 java面向对象的概念和定义 作业要求 每道题要有题目,代码,截图(只截运行结果). 题目1: 一个Phone ...

  3. 2017-2018-2 20179205《网络攻防技术与实践》第十一周作业 SQL注入攻击与实践

    <网络攻防技术与实践>第十一周作业 SQL注入攻击与实践 1.研究缓冲区溢出的原理,至少针对两种数据库进行差异化研究 缓冲区溢出原理   在计算机内部,输入数据通常被存放在一个临时空间内, ...

  4. JAVA第三周作业(从键盘输入若干数求和)

    JAVA第三周作业(从键盘输入若干数求和) 在新的一周,我学习了JAVA的IO编程.下面的代码实现了从键盘输入若干数求和的目标.import java.util.Scanner; public cla ...

  5. 2017-2018-1 JAVA实验站 第二周作业

    2017-2018-1 JAVA实验站 第二周作业 小组成员: 组长 20162318张泰毓 成员 20162303石亚鑫 20162304张浩林 20162307张韵琪 20162321王彪 201 ...

  6. 《Linux内核原理与设计》第十一周作业 ShellShock攻击实验

    <Linux内核原理与设计>第十一周作业 ShellShock攻击实验 分组: 和20179215袁琳完成实验及博客攥写 实验内容:   Bash中发现了一个严重漏洞shellshock, ...

  7. 2019-2020-1 20199329《Linux内核原理与分析》第十一周作业

    <Linux内核原理与分析>第十一周作业 一.本周内容概述: 学习linux安全防护方面的知识 完成实验楼上的<ShellShock 攻击实验> 二.本周学习内容: 1.学习& ...

  8. 2020-2021-1 20209307 《Linux内核原理与分析》第十一周作业

    这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第十一周作业> 这个作业的目标 ...

  9. 1903021116—吉琛—Java第七周作业—客户类测试

    项目 内容 课程班级博客链接 19信计班 这个作业要求链接 第七周作业链接 博客名称 学号-姓名-Java第七周作业-客户类测试 要求 每道题要有题目,代码(使用插入代码,不会插入代码的自己查资料解决 ...

  10. 1903021116—吉琛—Java第六周作业—类的定义

    项目 内容 课程班级博客链接 19信计班 这个作业要求链接 第六周作业链接 java面向对象的概念和定义 博客名称 学号-姓名-Java第六周作业-题目自拟 要求 每道题要有题目,代码(使用插入代码, ...

随机推荐

  1. Jenkins+Docker 实现一键自动化部署项目!

    博主分享的非常好:https://mp.weixin.qq.com/s/a0JOuiqLsUMcQSEjZ4uGTg 本文章实现最简单全面的Jenkins+docker+springboot 一键自动 ...

  2. javascript获取浏览器窗口分辨率|浏览器全屏分辨率|屏幕分辨率

    浏览器窗口分辨率指显示网页的区域,在PC端由于浏览器窗口大小可调节,这个值是可变的.在手机等移动端浏览器窗口大小不可调节,宽度值是固定的,但竖屏和横屏切换会改变. 浏览器全屏分辨率是指浏览器启用全屏显 ...

  3. Windows 10 与Windows11 功能比较(红字为不同点)

    Windows 10 与Windows11 功能比较(红字为不同点)

  4. 通过抓取pintpoint2的页面信息把数据存入数据库python3

    目标:对生产环境的服务质量进行量化, 解决办法:把pintpoint2里的数据转存入mysql数据库,作成报表,目前支持总请求数,错误请求数,中位数,平均数,95值(每分钟一次定时任务),其它指标可以 ...

  5. Unity实现手机录音功能

    using UnityEngine;using System.Collections;public class MicPhoneScripts : MonoBehaviour{    private ...

  6. debian/ubuntu下安装nodejs npm

    举例:在 /home 目录下 wget https://nodejs.org/dist/v16.17.1/node-v16.17.1-linux-x64.tar.xz nodejs官网下载地址,目前最 ...

  7. IDEA debug时拷贝数据 Evaluate Expression窗口

    今日份鸡汤:别人再好,也是别人.自己再不堪,也是自己,独一无二的自己.只要努力去做最好的自己,一生足矣.为自己的人生负责,为自己的梦想买单. 用IDEA调试时候经常需要拷贝变量值出来排查,特别是数据结 ...

  8. centos7 双网卡同网段双网关配置

    需求: #1.服务器为双网卡: #2.网卡1为互联网 172.16.137.99/24/254 #3.网卡2为旅游专网 172.16.137.97/24/1 #4.互联网路由器为172.16.137. ...

  9. 算法图解 - 第1章 二分查找 与大O

    例子:猜一个1到100之间的数,最多猜几次? # 最糟糕的猜法:一个一个的猜 - 最多查找次数: n  - 运行时间: O(n) # 二分查找:在有序的一组数中猜一个数,对半猜.找到返回其位置(索引) ...

  10. Blob下载

    下载方式 const aBlob = new Blob( array, options ); export function downLoadFile(data: ArrayBuffer, fileN ...