项目 内容
课程班级博客链接 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. Go--解析yaml文件

    yaml 文件是目前最常用的配置文件,使用go语言编写代码和工具时,也会用到yaml文件,将服务配置及中间件等信息定义到yaml文件中,后续可根据实际场景来选用. //先下载外部包 go get -u ...

  2. Charles抓包工具详解

    学习Charles能做什么: 能够用charles分析前后端问题 能够使用charles模拟弱网测试环境 能够使用charles断点构建异常的测试环境 Charles 简介 1.Charles是什么? ...

  3. (03-14) synopsys中工具介绍,VCS,DC,PT等

    https://blog.csdn.net/fangxiangeng/article/details/80981536 (1)Nlint 检查,spyglass (2)PT 静态时序检查 (3)Icc ...

  4. openssl常用操作

    参考:https://www.golinuxcloud.com/openssl-view-certificate/ 查看证书信息 openssl x509 -in server.crt -text - ...

  5. Outlook配置文件位置

    [HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles ...

  6. BP神经网络及手工搭建神经网络

    import pandas as pd import numpy as np import matplotlib.pyplot as plt def sigmoid(x): # 定义网络激活函数 re ...

  7. Mysql数据库的表结构

    [INFORMATION_SCHEMA 数据库] 是MySQL自带的,它提供了访问数据库 元数据 的方式, 元数据:数据库名或表名,列的数据类型,或访问权限等. 在MySQL中,把[INFORMATI ...

  8. windows2012安装.net4.7.2

    第一步,下载.net4.7.2安装包 离线包:https://download.visualstudio.microsoft.com/download/pr/1f5af042-d0e4-4002-9c ...

  9. Linux安装oracle jdk

    jdk8下载地址:Java Archive Downloads - Java SE 8 (oracle.com) ##安装oracle linux时自带的jdk [root@mylinux7 ~]# ...

  10. java创建对象时内存发生了什么

    Student s = new Student();\ 把Student.class文件加载到内存 在栈内存给s变量开辟一个空间 在堆内存为学生对象申请一个空间 给成员变量进行默认初始化 给成员变量显 ...