java类接口实验_实验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){}

}

上题运行结果:

0818b9ca8b590ca3270a3433284dd417.png

// 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;

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值