类的继承与接口

来源:互联网 发布:java发牌游戏程序 编辑:程序博客网 时间:2024/05/16 09:14

今天上午左哥给我补课,讲了类的继承和接口。

方法有三种:普通,构造和抽象。类也有三种:普通,抽象和接口。extends只能单继承,但implements可多实现接口。

今天还做了图画板.可以实现画直线、矩形、椭圆和实心椭圆。

package draw;import java.awt.FlowLayout;import java.awt.Graphics;import javax.swing.ButtonGroup;import javax.swing.JFrame;import javax.swing.JRadioButton;public class Draw extends JFrame{public static void main(String[] args) {//创建一个当前类的对象Draw draw = new Draw();//调用对象的方法draw.initFrame();}public void initFrame(){this.setTitle("图画板");this.setSize(500, 500);this.setDefaultCloseOperation(3);FlowLayout ly = new FlowLayout();this.setLayout(ly);//设置JRadioButton单选按钮JRadioButton j1 = new JRadioButton("直线",true);//逐个按钮设置名称j1.setActionCommand("line");this.add(j1);JRadioButton j2 = new JRadioButton("矩形");j2.setActionCommand("rect");this.add(j2);JRadioButton j3 = new JRadioButton("椭圆");j3.setActionCommand("oval");this.add(j3);JRadioButton j4 = new JRadioButton("实心椭圆");j4.setActionCommand("filloval");this.add(j4);//将4个单选按钮设为一组ButtonGroup bg = new ButtonGroup();bg.add(j1);bg.add(j2);bg.add(j3);bg.add(j4);this.setVisible(true);//获取当前界面的图片操作Graphics g = this.getGraphics();//创建一个鼠标监听器的对象,并且传递参数Draw_p dp = new Draw_p(g,bg);//为当前界面添加鼠标监听器的对象this.addMouseListener(dp);}}
这是主函数

JRadioButton是一个新的知识点,是选择单选按钮。

package draw;import java.awt.Graphics;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.ButtonGroup;public class Draw_p implements MouseListener{//定义全局变量private int x1,x2,y1,y2;private Graphics g ;private String s ;private ButtonGroup bg ;//构造方法接收主函数传递的参数public Draw_p(Graphics g,ButtonGroup bg){this.g = g; this.bg = bg ;}public void mouseClicked(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void mousePressed(MouseEvent e) {x1 = e.getX();y1 = e.getY();s = bg.getSelection().getActionCommand();}public void mouseReleased(MouseEvent e) {x2 = e.getX();y2 = e.getY();if("line".equals(s)){g.drawLine(x1, y1, x2, y2);}else if("rect".equals(s)){g.drawRect(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x1-x2), Math.abs(y1-y2));}else if("oval".equals(s)){g.drawOval(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x1-x2), Math.abs(y1-y2));}else if("filloval".equals(s)){g.fillOval(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x1-x2), Math.abs(y1-y2));}}}

这是draw_p类继承鼠标监听器接口,获取坐标值以及运算都在这里绘图都在这里操作。

这是java面向对象的思想,结构分明,条理清晰,不会再像五子棋那个程序那样,一个类里面写完,密密麻麻的代码,看得头都晕了。

今天还有一个小知识点就是,类与类之间的传值问题:通过构造函数进行传值,把参数写到构造函数的参数里面去,可以对别的对象的参数进行操作。



That's all.微笑



2 0