一、实验目的:
1、学会定义并实现类。
2、学会定义并创建类的对象,通过类的对象访问类的成员属性与方法。
3、学会定义并实现派生类,学会使用派生类的对象。
4、理解并学会使用类的多态性。
二、实验环境:
可运行Eclipse和JAVA环境的电脑。
三、实验内容:
1.定义并实现一个长方体类(Cube),包含长(length)、宽(width)与高(height)等三个属性,包含计算体积(calVolume)与计算表面积(calArea)等两个方法,类的属由构造函数进行初始化或通过成员函数赋值。编写一段程序,测试该类。
运行代码:
package C;
class Cube
{
int length;
int width;
int height;
int calvo;
int cala;
public Cube(int l,int w, int h)
{
length=l;
width=w;
height=h;
calvo=h*w*l;
cala=(l*h+l*w+h*w)*2;
}
}
public class C {
public static void main(String[] args)
{
Cube c=new Cube(1,2,3);
System.out.println("体积为:"+c.calvo+"\t面积为:"+c.cala);
}
}
运行截图:
2.定义并实现一个三角形类(Triangle),其三个边长(edge1, edge2, edge3)为其属性,包含判断其是否为三角形(isTriangle)、计算周长(calPerimeter)及计算面积(calArea)等三个方法,类的属由构造函数进行初始化或通过成员函数赋值。编写一段程序,测试该类。
实验代码:
package T;
class trangle
{
float edge1;
float edge2;
float edge3;
double p;
trangle(float e1,float e2,float e3 )
{
edge1=e1;
edge2=e2;
edge3=e3;
}
public int judge ()
{
if(edge1+edge2>edge3&&edge1+edge3>edge2&&edge2+edge3>edge1)
if(edge1-edge2<edge3&&edge1-edge3<edge2&&edge2-edge3<edge1&&edge2-edge1<edge3&&edge3-edge1<edge2&&edge3-edge2<edge1)
{ System.out.println("是三角形\n");return 1;}
return 0;
}
public void cal()
{
if(judge()==1)
{
p=(edge1+edge2+edge3)/2;
double area=Math.sqrt(p*(p-edge1)*(p-edge2)*(p-edge3));
float l=edge1+edge2+edge3;
System.out.println("面积为:"+area+"\n周长为:"+l);
}
}
}
public class T
{
public static void main(String[] args)
{
trangle T=new trangle(3,4,5);
T.cal();
}
}
运行结果:
- 定义并实现一个复数类(Complex),包含实部(real)及虚部(image)两个属性,包含计算两个复数的和(add)、积(multiply)以及打印复数(print)等三个方法,类的属由构造函数进行初始化或通过成员函数赋值。编写一段程序,测试该类。
package Com;
class Complex
{
double real;
double image;
Complex(double r,double i)
{
this.image=i;this.real=r;
}
//sum
public static Complex add(Complex f,Complex s)
{
Complex temp=new Complex(0,0);
temp.image=f.image+s.image;
temp.real=f.real+s.real;
return temp;
}
//Multiply
public static Complex Mu(Complex f,Complex s)
{
Complex temp=new Complex(0,0);
temp.real=f.real*s.real-f.image*s.image;
temp.image=f.image*s.real+f.real*s.image;
return temp;
}
}
public class Com
{
public static void main(String args[])
{
Complex f=new Complex(1,2);
Complex s=new Complex(3,4);
Complex temp=new Complex(0,0);
temp=temp.add(f, s);
System.out.printf("Sum is:"+temp.real+"+"+temp.image+"i\n");
temp=temp.Mu(f,s);
System.out.printf("Multiply is:"+temp.real+"+"+temp.image+"i");
}
}
运行截图:
4.定义并实现一个Person类,包含姓名(name)与编号(code)等两个属性,通过构造函数为属性赋值,拥有显示属性值的方法(showInfo)。从Person类派生出一个Student类,拥有数学成绩、英语成绩、Java成绩等三个属性,拥有输入成绩、计算平均成绩、显示信息(姓名、编号及平均值)等方法。编写一段程序,测试这两个类。
运行代码:
package Rer;
import java.util.Scanner;
class Person
{
String name;
int code;
Person(String n,int c)
{
name=n;
code=c;
}
public void Showinfo()
{
System.out.println("\t name:"+name+"\t code:"+code);
}
}
class Student extends Person
{
float math;
float english;
float java;
Student(String n,int c)
{
super(n,c);
}
//input
public void Input()
{
Scanner input=new Scanner(System.in);
System.out.println("enter math english and java:");
math=input.nextFloat();
english=input.nextFloat();
java=input.nextFloat();
input.close();
}
//Caculate
public float Cal()
{
return (math+english+java)/3;
}
//show information
public void showinfo2()
{
Showinfo();
System.out.println("\t math:"+math+"\t english:"+english+"\t java:"+java+"\t average:"+Cal()+"\n");
}
}
public class Per
{
public static void main(String[] args)
{
Student s=new Student("jack",2);
s.Input();
s.showinfo2();
}
}
运行截图
5.定义并实现一个Circle类,属性为圆的半径radius,其值由构造函数初始化。包含计算周长(calPerimeter)与计算面积(calArea),显示信息(半径、周长与面积)(showInfo)等方法。从Circle类派生出Cylinder类,拥有高(height)这个属性,其值由构造函数初始化。包含计算表面积(calArea)、计算体积(calVolume)及显示信息(半径、表面积、体积)(showInfo)等方法。编写一段程序,测试这两个类。
package Cir;
public class Circle
{
float r;
Circle(float rad)
{r=rad;}
public double Calper()
{ return 2*3.14*r; }
public double Calarea()
{
return 3.14*r*r;
}
public void Showinfo()
{
System.out.println("\t radim:"+r+"\t Perimeter:"+Calper()+"\t Area:"+Calarea()+"\n");
}
}
package Cir;
public class Cylinder extends Circle
{
float h;
Cylinder(float rad,float height)
{
super(rad);
h=height;
}
public double Calarea()
{
return (super.Calarea()*2+super.Calper()*h);
}
public double Calvo()
{
return (super.Calarea()*h);
}
public void Showinfo()
{
System.out.println("\t radim:"+r+"\t Area:"+Calarea()+"\t Volume:"+Calvo()+"\n");
}
}
package Cir;
public class Do {
public static void main(String[] args)
{
Circle ci=new Circle(2);
ci.Showinfo();
Cylinder cy=new Cylinder(2,2);
cy.Showinfo();
}
}
运行截图:
6.定义并实现如下三个类:(1)Shape类,无属性,有一个抽象方法calArea;(2)Rectangle类,从Shape类派生,有长度(length)与宽度(width)两个属性,需重写calArea方法;(3)Circle类,从Shape类派生,有半径(Radius)一个属性,需重写calArea方法。编写一段程序来测试这几个类。
package last;
public abstract class Shape
{
public abstract double Calarea();
package last;
public class Rectangle extends Shape
{
double lenth;
double width;
public Rectangle(double lenth,double width)
{
this.lenth=lenth;
this.width=width;
}
//make
public double Calarea()
{
return lenth*width;
}
}
package last;
public class Circle extends Shape
{
double radius;
Circle(double radius)
{this.radius=radius;}
//make
public double Calarea()
{
return Math.PI*(Math.pow(radius, 2));
}
}
package last;
public class Do {
public static void main(String[] args) {
Rectangle r=new Rectangle(1.0,1.0);
System.out.println("Rrctangle area :"+r.Calarea()+"\n");
Circle c=new Circle(2.2);
System.out.println("Circle area :"+c.Calarea()+"\n");
}
}
运行截图:
7.在6的基础上,从Rectangle类派生Cube类,有属性高度(width),有计算表面积(calArea)及计算体积(calVolume)等方法。编写一段程序来测试这几个类。
运行代码:
package last;
public class Cube extends Rectangle
{
private double width;
Rectangle r = new Rectangle(3,4);
public Cube(double width)
{
super(0,0);
this.width = width;
}
public double Calarea(){
return 2*(r.lenth*r.width+r.lenth*width+r.width*width);
}
public double Calvoume()
{
return r.Calarea()*width;
}
}
运行截图:
多次重复本文仅供参考学习,全文复制粘贴者后果自负;
强烈推荐跟动力节点学好java基础:B站链接
掌握Java学习思路,少走弯路,不要想我一样当初学习四处碰壁。
推荐歌曲:半岛铁盒–周杰伦