实验3_Java类的继承和接口的定义和使用

本次有三题:学会Java类的继承、接口的定义和使用

 

// Ex3_1.java

/**
 * 题目要求:
 * 修改例5.7(P95)实现在页面中拖动鼠标画出矩形,矩形的对角线为点击并拖动鼠标形成的直线线段。
 * 源程序保存为Ex3_1.java。
 * 使用到的绘制矩形函数:drawRect(x,y,width,height); 
 * 其中x,y是矩形左上角的坐标,width、height是矩形的宽和高。
 **/

 import java.applet.Applet;
 import java.awt.*;
 import java.awt.event.*;

 public class Ex3_1 extends Applet implements MouseListener, MouseMotionListener
 {
	 // MouseListener 用于接收组件上“感兴趣”的鼠标事件(按下、释放、单击、进入或离开)的侦听器接口。
	 // MouseMotionListener 用于接收组件上的鼠标移动事件的侦听器接口。(对于单击和其他鼠标事件,请使用 MouseListener。) 
	 int x1, y1, x2, y2;

	 public void init()
	 {
		 addMouseListener(this);
		 addMouseMotionListener(this);
	 }
	 
	 public void paint(Graphics g)
	 {
		 // 计算长宽
		 int width = x2 - x1;
		 if (width < 0) { width = 0 - width;	 }
		 int height = y2 - y1;
		 if (height < 0) { height = 0 - height;	 }
		 
		 // 确认哪边为原点坐标
		 // 这里有四种情况,当设x1, y1 为原点时,画矩形时另一个点会在四个像限中的其中一个
		 // 那么,此时,必须得改变原点坐标,使其输出,以最小的x, y 作为原点
		 if (x2 < x1 && y2 > y1){g.drawRect(x2,y1,width,height); }
		 else if (x2 > x1 && y2 > y1){g.drawRect(x1,y1,width,height); }
		 else if (x2 < x1 && y2 < y1){g.drawRect(x2,y2,width,height); }
		 else {g.drawRect(x1,y2,width,height); }
	 }

	 public void mousePressed(MouseEvent e)  // 按下鼠标,记录起点
	 {
		 x1 = e.getX();
		 y1 = e.getY();
	 }

	 public void mouseClicked(MouseEvent e){}
	 public void mouseEntered(MouseEvent e){}
	 public void mouseExited(MouseEvent e){}
	 public void mouseReleased(MouseEvent e){}
	 /**
	  * 操作:void mouseDragged(MouseEvent e)
	  * 鼠标按键在组件上按下并拖动时调用。
	  * 在释放鼠标按键前,MOUSE_DRAGGED 事件被连续地传递到发起该拖动的组件(而不管鼠标位置是否处于该组件的边界内)。 
	  **/
	 public void mouseDragged(MouseEvent e)   // 记录终点坐标并刷新屏幕显示
	 {
		 x2 = e.getX();
		 y2 = e.getY();
		 repaint();
	 }

	 public void mouseMoved(MouseEvent e){}
 }

 

<html>
<applet code = "Ex3_1.java" height = 600 width = 800>
</applet>
</heml>


上题运行结果:


 

 

// Ex3_2.java

/**
 * 题目要求:按如下要求编写程序,定义类A和类B及添加相应的成员变量、成员方法:
 * 类A:两个成员变量:
 * 	int类型变量z,赋值为 16 ;
 * 	char类型变量x,赋值为 'A' 。
 *  一个成员方法:
 *   	myPrint( ):用于在屏幕上输出z和x的值。
 * 类B:类A的子类,再定义两个成员变量:
 * 	  double类型的变量y,赋值为16.0;
 * 	  String类型的变量s,赋值为“java program”。
 *   两个个成员方法:
 * 	   myPrint(),用于在屏幕上输出y和s的值。
 * 	   printAll( ):分别调用父类和子类的方法myPrint( )。
 * 编写main方法测试程序,创建B的对象b,调用printAll方法显示z、x、y、s的值。
 **/

import java.lang.*;

public class Ex3_2
{
	public static void main(String [] args)
	{
	   B test = new B();
	   test.printAll();
	}
}

class A
{
	int z = 16;
	char x = 'A';
	public void myPrint(){
		System.out.println("类A: z = " + z + ", x = " + x); 
	}
}

class B extends A
{
	double y = 16.0;
	String s = "java program";
	public void myPrint(){
		System.out.println("类B: y = " + y + ", s = " + s); 
	}
	public void printAll(){
		super.myPrint();
		myPrint();
	}
}


 

// Ex3_3.java

/**
 * 题目要求:
 * 定义一个接口Areaable,接口中定义一个求面积的抽象方法:getArea()。
 * 然后声明一个类Circle实现Areaable接口,添加成员变量记录圆半径,实现接口中的方法求圆面积,
 * 并编写main方法测试程序,创建对象,计算并输出其面积。
 **/

 public class Ex3_3
 {
	 public static void main(String [] args)
	 {
		 Circle test = new Circle();
		 test.setR(10.0);
		 double result = test.getArea();
		 System.out.println("求得面积为:" + result);
	 }
 }

interface Arreaable
 {
	 double getArea();
 }

 class Circle implements Arreaable
 {
	 double r;
	 public void setR(double R){
		r = R;
	 }
	 public double getArea(){
		 return r * r;
	 }
 }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值