实验三、类与对象

一、实验目的:

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();    
	}
}

运行结果:
在这里插入图片描述

  1. 定义并实现一个复数类(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学习思路,少走弯路,不要想我一样当初学习四处碰壁。
推荐歌曲:半岛铁盒–周杰伦

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值