JAVA 作业 实验名称:接口,继承与多态
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA 作业 实验名称:接口,继承与多态相关的知识,希望对你有一定的参考价值。
1. 新建Eclipse项目,项目名为My_Eight;
2.定义接口Shape,用来表示一般二维护图形,Shaple具有抽象方法area和perimeter,分别用来计算形状的面积和周长,定义子类:圆形,三角形和矩形。这些类通过实现Shape接口,进行具体的计算出各种形状的周长和面积。请根据要求进行设计接口和类,并进行测试。
3.定义抽象类Shape,用来表示一般二维图形,Shape具有抽象方法area和perimeter,分别用来计算形状的面积和周长,定义子类:圆形,三角形和矩形。这些类通过继承Shape来实现,进行具体的计算出各种形状的周长和面积。请根据要求进行设计类,并进行测试。
4.使用面向对象的概念表示出下面的生活场景:小花去超市买东西,所有买到的东西都放在了购物车之中,最后到收银台一起结账。
Shape:
package com.test;
public interface Shape
public double area();
public double perimeter();
Circle:
package com.test;
public class Circle implements Shape
double r = 5;
double pi = 3.14;
@Override
public double area()
return pi*r*r;
@Override
public double perimeter()
return 2*pi*r;
Rectangle:
package com.test;
public class Rectangle implements Shape
double a = 3;
double b = 4;
@Override
public double area()
return a*b;
@Override
public double perimeter()
return 2*(a+b);
Triangle:
package com.test;
public class Triangle implements Shape
double a = 4;
@Override
public double area()
return a*a;
@Override
public double perimeter()
return 4*a;
3.
shape:
package com.test.abstr;
public abstract class Shape
public double area()
return 0.0;
public double perimeter()
return 0.0;
Circle:
package com.test.abstr;
public class Circle extends Shape
double r = 5;
double pi = 3.14;
public double area()
return pi*r*r;
public double perimeter()
return 2*pi*r;
Rectangle:
package com.test.abstr;
public class Rectangle extends Shape
double a = 3;
double b = 4;
public double area()
return a*b;
public double perimeter()
return 2*(a+b);
Triangle:
package com.test.abstr;
public class Triangle extends Shape
double a = 4;
public double area()
return a*a;
public double perimeter()
return 4*a;
Test:
package com.test.abstr;
public class Test
/**
* @param args
*/
public static void main(String[] args)
Shape s1 = new Circle();
System.out.println(s1.area());
System.out.println(s1.perimeter());
Shape s2 = new Rectangle();
System.out.println(s2.area());
System.out.println(s2.perimeter());
Shape s3 = new Triangle();
System.out.println(s3.area());
System.out.println(s3.perimeter());
结果:
78.5
31.400000000000002
12.0
14.0
16.0
16.0
4.package com.test.four;
public class Person
String name;
public void pay(double num)
System.out.println(name+"共花费"+num+"元");
package com.test.four;
public class ShoppingCart
public String name;
public double price;
public int count;
package com.test.four;
public class Checkstand
public static void main(String[] args)
double count = 0.0;
ShoppingCart sc1 = new ShoppingCart();
sc1.name = "牙膏";
sc1.price = 6.5;
sc1.count = 1;
count = count + getCount(sc1);
ShoppingCart sc2 = new ShoppingCart();
sc2.name = "香皂";
sc2.price = 4.5;
sc2.count = 1;
count = count + getCount(sc2);
ShoppingCart sc3 = new ShoppingCart();
sc3.name = "洗衣粉";
sc3.price = 16.5;
sc3.count = 1;
count = count + getCount(sc3);
Person person = new Person();
person.name = "小花";
person.pay(count);
public static double getCount(ShoppingCart sc)
System.out.println(sc.name+" ----"+sc.count+"件 "+sc.price * sc.count+"元");
return sc.price * sc.count;
结果:
牙膏 ----1件 6.5元
香皂 ----1件 4.5元
洗衣粉 ----1件 16.5元
小花共花费27.5元
个人建议,如果是初学者还是自己多去思考,多去练习,如果以后想从事软件开发方面的,更需要多练多看多想。
参考技术A我的项目仅仅作为抛砖引玉,借鉴作用,有不懂的可以继续问我,加油!!!
//接口public interface Shape
public float area();
public float perimeter();
//圆
public class Circular implements Shape
private final float pi = 3.14f;
private float r;
public Circular()
super();
public Circular(float r)
super();
this.r = r;
@Override
public float area()
// TODO Auto-generated method stub
return pi*r*r;
@Override
public float perimeter()
return 2*pi*r;
//矩形
public class Rectangle implements Shape
private float x; //长
private float y; //宽
public Rectangle()
public Rectangle(float x, float y)
super();
this.x = x;
this.y = y;
@Override
public float area()
return x*y;
@Override
public float perimeter()
return 2*(x+y);
//三角形
public class Triangle implements Shape
//x,y,z分别表示三角形的三条边
private float x;
private float y;
private float z;
public Triangle()
public Triangle(float x, float y, float z)
super();
this.x = x;
this.y = y;
this.z = z;
@Override
public float area()
return x*y/2; //此时x,y为两直角边
@Override
public float perimeter()
return x+y+z;
参考技术B 这样问问题, 能得到帮助的可能性会小很多.你应该尝试去写代码, 遇到的技术问题再来发问, 然后可能会得到更多的帮助. 直接就发业务, 别人可能不会愿意帮你写代码.
java eclipse 作业代写代做eclipse实验
java eclipse 作业代写、代做eclipse实验
《java程序设计》课程实验报告
实验四 继承与多态
一、实验目的及要求
1、了解如何使用类及其成员的修饰符,掌握方法的继承、重载和覆盖。
2、掌握类的继承关系和派生方法。
3、掌握多态的概念与使用。
4、掌握接口的定义与使用。
二、实验内容
(一)类的继承性练习
1.进一步理解继承的含义
新类可从现有的类中产生,并保留现有类的成员变量和方法并可根据需要对它们加以修改。新类还可添加新的变量和方法。这种现象就称为类的继承。
当建立一个新类时,不必写出全部成员变量和成员方法。只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。被继承的类称为父类或超类(superclass),这个新类称为子类。
Java 提供了一个庞大的类库让开发人员继承和使用。设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。所以,通常要对子类进行扩展,即添加新的属性和方法。这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。继承的意义就在于此。
2.编写两个程序文件KY4_1.java和KY4_2.java,实现类的继承。
3.KY4_1.java的代码如下:
public class KY4_1
{
protected String xm; //姓名
protected int xh; //学号
void setdata(String m,int h) //该方法为姓名和学号赋初始值
{
xm =m;
xh = h;
}
public void print() //输出学生的姓名和学号
{
System.out.println(xm+", "+xh);
}
}
4.编译 KY4_1.java,产生类文件 KY4_1.class。注意:暂时不运行程序KY4_2.class。
5.编写一个程序文件KY4_2.java。程序功能如下:子类KY4_2继承父类 KY4_1,其不仅具有父类的成员变量 xm(姓名)、xh(学号),还定义了新的成员变量 xy(学院)、xi(系)。在子类KY4_2中重写了父类的方法print(),在该方法中不仅输出学生的姓名和学号,而且还输出学生的学院和系。另外,在子类KY4_2中还定义了一个主方法main。首先,在主方法中创建一个父类 KY4_1的对象f,设置f的姓名为你自己的名字,学号为"12321",并且调用print()方法输出对象f的姓名和学号。接着,在主方法中创建一个子类 KY4_2的对象s,设置s的姓名为"郭娜",学号为"12345",学院为"经济管理学院",系为"信息管理系",并且调用print()方法输出对象s的姓名,学号,学院和系。
6.编译并运行程序KY4_2.java。请将KY4_2的源程序以及运行结果写在实验报告中。
注意:父类 KY4_1 与子类 KY4_2要在同一文件夹(路径)内。
要求: 将程序的源代码、运行结果写在实验报告上。
(二)掌握上转型对象的使用,理解不同对象的上转型对象调用同一方法可能产生不同的行为(多态)。
上转型对象可以访问子类继承或隐藏的成员变量,也可以调用子类继承的方法或子类重写的实例方法(此时等价于子类对象去调用这些方法。)如果子类重写了父类的某个实例方法后,对象的上转型对象调用的这个实例方法一定是子类重写的实例方法)。
1. 编写一个abstract类,类名为Geometry,该类有一个abstract方法。
public double area();
2. 编写Geometry的若干个子类,比如Circle子类和Rect子类。
3. 编写Student类,该类定义一个public double area(Geometry ...p)方法,该方法的参数是可变参数,即参数的个数不确定,但类型都是Geometry。该方法返回参数计算的面积之和。
4. 在主类MainClass的main方法中创建一个Student对象,让该对象调用
public double area(Geometry ...p)计算若干个矩形和若干个圆的面积之和。
Geometry.java
public abstract class Geometry{
public abstract double getArea( );
}
Rect.java
public class Rect extends Geometry {
double a,b;
Rect(double a,double b) {
this.a = a;
this.b = b;
}
【代码1】 //重写 getArea()方法,返回矩形面积
}
Circle.java
public class Circle extends Geometry {
double r;
Circle(double r) {
this.r = r;
}
【代码2】 //重写 getArea()方法,返回圆面积
}
Student.java
public class Student {
public double area(Geometry ...p) {
double sum=0;
for(int i=0;i<p.length;i++) {
sum=sum+p[i].getArea();
}
return sum;
}
}
MainClass.java
public class MainClass{
public static void main(String args[]) {
Student zhang = new Student();
double area =
zhang.area(new Rect(2,3),new Circle(5.2),new Circle(12));
System.out.printf("2个圆和1个矩形图形的面积和:\n%10.3f",area);
}
}
实验内容要求:将【代码】部分替换为java程序代码,成为完整的程序并将程序的源代码、运行结果写在实验报告上。
(三)面向接口编程
接口回调是多态的另一种体现。接口回调是指可以把使用某一接口的类创建的对象的引用赋给该接口变量,那么该接口变量就可以调用被类实现的接口中的方法,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法。所谓面向接口编程,是指当设计某个重要的类时,不让该类面向具体的类,而是面向接口。即设计类中的重要数据是接口声明的变量,而不是具体类声明的对象。
天气可能出现不同的状态,要求用不同的接口封装天气的状态。
具体要求如下:
? 1.编写接口WeatherState,该接口有一个名字为void showState()的方法。
? 2.编写Weather类,该类中有一个WeatherState声明的变量state。另外,该类有一个show()方法,在该方法中让接口state回调showState()的方法。
? 3.编写若干个实现WeatherState接口的类,负责刻画天气的各种状态。
? 4.编写主类,在主类中进行天气预报。
WeatherState.java
public interface WeatherState { //接口
public void showState();
}
Weather.java
public class Weather {
WeatherState state;
public void show() {
state.showState();
}
public void setState(WeatherState s) {
state = s;
}
}
WeatherForecast.java
public class WeatherForecast { //主类
public static void main(String args[]) {
Weather weatherBeijing =new Weather();
System.out.print("\n今天白天:");
weatherBeijing.setState(new CloudyDayState());
weatherBeijing.show();
System.out.print("\n今天夜间:");
weatherBeijing.setState(new LightRainState());
weatherBeijing.show();
System.out.print("转:");
weatherBeijing.setState(new HeavyRainState());
weatherBeijing.show();
System.out.print("\n明天白天:");
weatherBeijing.setState(new LightRainState());
weatherBeijing.show();
System.out.print("\n明天夜间:");
weatherBeijing.setState(new CloudyLittleState());
weatherBeijing.show();
}
}
CloudyLittleState.java
public class CloudyLittleState implements WeatherState {
public void showState() {
System.out.print("少云,有时晴.");
}
}
CloudyDayState.java
public class CloudyDayState implements WeatherState {
【代码1】 //重写public void showState()
}
HeavyRainState.java
public class HeavyRainState implements WeatherState{
【代码2】 //重写public void showState()
}
LightRainState.java
public class LightRainState implements WeatherState {
【代码3】 //重写public void showState()方法
}
实验内容要求:将【代码】部分替换为java程序代码。将程序的源代码、运行结果写在实验报告上。
三、实验设备与环境
windows7及以上系统,安装eclipse+JDK
四、实验过程和结果
五、实验总结
http://www.6daixie.com/contents/9/1337.html
我们的方向领域:window编程 数值算法 AI人工智能 金融统计 计量分析 大数据 网络编程 WEB编程 通讯编程 游戏编程多媒体linux 外挂编程 程序API图像处理 嵌入式/单片机 数据库编程 控制台 进程与线程 网络安全 汇编语言 硬件编程 软件设计 工程标准规等。其中代写代做编程语言或工具包括但不限于以下范围:
C/C++/C#代写
Java代写
IT代写
Python代写
辅导编程作业
Matlab代写
Haskell代写
Processing代写
Linux环境搭建
Rust代写
Data Structure Assginment 数据结构代写
MIPS代写
Machine Learning 作业 代写
Oracle/SQL/PostgreSQL/Pig 数据库代写/代做/辅导
Web开发、网站开发、网站作业
ASP.NET网站开发
Finance Insurace Statistics统计、回归、迭代
Prolog代写
Computer Computational method代做
因为专业,所以值得信赖。如有需要,请加QQ:99515681 或邮箱:[email protected]
微信:codinghelp
以上是关于JAVA 作业 实验名称:接口,继承与多态的主要内容,如果未能解决你的问题,请参考以下文章