`
huihui920823
  • 浏览: 37108 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

构造方法传参数的小心得

 
阅读更多
Shape类中
import java.awt.Color;
import java.awt.Graphics;

/*
 * 顶级形状类
 */

public abstract class  Shape {
	//坐标
	public int x1,x2,y1,y2;
	//颜色
	public Color color;
	//构造方法
	public Shape(int x1,int y1,int x2,int y2,Color color){		this.x1=x1;
		this.y1=y1;
		this.x2=x2;
		this.y2=y2;
		this.color=color;
	}
	//抽象画图方法
	public abstract void draw(Graphics g);
	
	

}

//构造方法
public Shape(int x1,int y1,int x2,int y2,Color color){ this.x1=x1;
this.y1=y1;
this.x2=x2;
this.y2=y2;
this.color=color;
}


MyMouseListener类中
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

/*
 * 自定义鼠标监听类,继承MouseAdapter(或实现了MouseListener、MouseMotionListener)
 */

	public class MyMouseListener extends MouseAdapter{
		private int x1,y1,x2,y2;
		private Graphics g;
		private ToolPanel tool_panel;
		private ColorPanel color_panel;
		private Color color;
		private String command;
		//构造方法
		public MyMouseListener(ToolPanel tool_panel,ColorPanel color_panel,DrawPanel draw_panel){
		g=draw_panel.getGraphics();//获取画布
		this.tool_panel=tool_panel;//接收对象
		this.color_panel=color_panel;//接收对象
		
		}
		//按下
		public void mousePressed(MouseEvent e){
			x1=e.getX();
			y1=e.getY();
			command=tool_panel.getCommand();//获取标志
			color=color_panel.getColor();//获取颜色
			g.setColor(color);//设置画布的颜色
		
		}
		//释放
		public void mouseReleased(MouseEvent e){
		x2=e.getX();
		y2=e.getY();
		
		if("line".equals(command)){
			Line line=new Line(x1,y1,x2,y2,color);			line.draw(g);
		
		}
		else if("rect".equals(command)){
			Rect rect=new Rect(x1,y1,x2,y2,color);			rect.draw(g);
		}
		else if("oval".equals(command)){
			Oval oval=new Oval(x1,y1,x2,y2,color);			oval.draw(g);
		}
		
		
	}
		//拖拽
		public void mouseDragged(MouseEvent e){
			x2=e.getX();
			y2=e.getY();
			Line line=new Line(x1,y1,x2,y2,color);
			line.draw(g);
			x1=x2;
			y1=y2;
		}

}

if("line".equals(command)){
Line line=new Line(x1,y1,x2,y2,color); line.draw(g);

}
else if("rect".equals(command)){
Rect rect=new Rect(x1,y1,x2,y2,color); rect.draw(g);
}
else if("oval".equals(command)){
Oval oval=new Oval(x1,y1,x2,y2,color); oval.draw(g);
}

Line类中
import java.awt.Color;
import java.awt.Graphics;

public class Line extends Shape{
	//构造方法
	public Line(int x1,int y1,int x2,int y2,Color color){
		super(x1,y1,x2,y2,color);//调用父类的构造方法
	}
	//实现抽象画图方法    画直线
	public void draw(Graphics g){
		g.setColor(color);
		g.drawLine(x1,y1,x2,y2);
	}

}

//构造方法
public Line(int x1,int y1,int x2,int y2,Color color){
super(x1,y1,x2,y2,color);//
调用父类的构造方法
}

Rect类中
import java.awt.Color;
import java.awt.Graphics;

public class Rect extends Shape{
	//构造方法
	public Rect(int x1,int y1,int x2,int y2,Color color){
		super(x1,y1,x2,y2,color);
	}
	//实现父类的抽象方法
	public void draw(Graphics g){
		g.setColor(color);
		g.drawRect(Math.min(x1,x2), Math.min(y1, y2), Math.abs(x1-x2), Math.abs(y1-y2));
	}

}

public Rect(int x1,int y1,int x2,int y2,Color color){
super(x1,y1,x2,y2,color);
Oval类中
import java.awt.Color;
import java.awt.Graphics;

public class Oval extends Shape{
	//构造方法
	public Oval(int x1,int y1,int x2,int y2,Color color){
		super(x1,y1,x2,y2,color);//调用直接父类的构造方法
		
		
	}
	//实现抽象方法类       画椭圆
	public void draw(Graphics g){
		g.setColor(color);
		g.drawOval(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x1-x2),Math.abs(y2-y2));
		
	}
}

//构造方法
public Oval(int x1,int y1,int x2,int y2,Color color){
super(x1,y1,x2,y2,color);//
调用直接父类的构造方法


}


这几个类中的构造方法中的参数的传参顺序:MyMouseListener类中的x1,y1,x2,y2,color 传到Line类,Rect类,Oval类中的构造方法中,然后,传到Shape类中的构造方法中
分享到:
评论

相关推荐

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    7.6 使用类的实例作为方法参数 172 7.6.1 超车方法:使用类实例做参数 172 7.6.2 调用这个方法 173 7.6.3 发生了什么 174 7.7 加餐:局部变量和实例变量 175 7.7.1 什么是局部变量(Local Variable) 175 ...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    7.6 使用类的实例作为方法参数 172 7.6.1 超车方法:使用类实例做参数 172 7.6.2 调用这个方法 173 7.6.3 发生了什么 174 7.7 加餐:局部变量和实例变量 175 7.7.1 什么是局部变量(Local Variable) 175 ...

    Javascript数组操作高级心得整理

     JavaScript 对大小写敏感 15  空格 15  换行 15 第二章JavaScript对象 1. JavaScript对象简介 15 (1) JavaScript对象也是有属性和方法的 15  对象属性的使用 15  对象方法的使用 15 (2) 对象的定义与实例...

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    9.3 以传引用的方式向方法传递参数 9.4 向方法传递可变数量的参数 9.5 参数和返回类型的指导原则 9.6 常量性 第10章 属性 10.1 无参属性 10.1.1 自动实现的属性 10.1.2 合理定义属性 10.1.3 对象和集合初始...

    c#学习笔记——学习心得

    方法在类或结构中声明,声明时需要制定访问级别、返回值、方法名称及方法参数。一个方法的签名由它的名称以及它的形参的个数、修饰符和类型组成。方法的签名是方法的唯一标识(同一个类中的区别标识)。 方法的重载:...

    lagrange插值多项式和Newton插值多项式【三个实验代码加一个实验报告】

    Lagrange插值通过给定的数据点构造一个插值多项式,确保在数据点上经过这些点。插值多项式的阶数可以通过调整参数进行控制,不同阶数的插值多项式可以对数据点进行不同程度的拟合。Newton插值使用差商来构建插值...

    Java程序设计实验报告.doc

    以上类中属性和方法的访问权限自行确定,方法和构造方法若有参数,也自行确定 。 实验代码: public class Rectangle { int Length; int Width; public int getLength() { return Length; } public void setLength...

    CLR.via.C#.(中文第3版)(自制详细书签)Part1

    9.3 以传引用的方式向方法传递参数 9.4 向方法传递可变数量的参数 9.5 参数和返回类型的指导原则 9.6 常量性 第10章 属性 10.1 无参属性 10.1.1 自动实现的属性 10.1.2 合理定义属性 10.1.3 对象和集合初始...

    CLR.via.C#.(中文第3版)(自制详细书签)

    9.3 以传引用的方式向方法传递参数 9.4 向方法传递可变数量的参数 9.5 参数和返回类型的指导原则 9.6 常量性 第10章 属性 10.1 无参属性 10.1.1 自动实现的属性 10.1.2 合理定义属性 10.1.3 对象和集合初始...

    CLR.via.C#.(中文第3版)(自制详细书签)Part3

    9.3 以传引用的方式向方法传递参数 9.4 向方法传递可变数量的参数 9.5 参数和返回类型的指导原则 9.6 常量性 第10章 属性 10.1 无参属性 10.1.1 自动实现的属性 10.1.2 合理定义属性 10.1.3 对象和集合初始...

    Java 高级特性.doc

    class.newInstance()内部其实就是在用默认的构造方法 ----------------------- 讲Method //方法 Method charAt = Class.forName("java.lang.String").getMethod("charAt", int.class); System.out.println...

    C++/JAVA/C#子类调用父类函数情况总结

    时间久了就容易记不清了,特留存备用查看 ...—–基类无/有默认构造函数时,在子类构造函数初始化列表处调用,则显示调用 基类类名(参数) class Base { public: Base(int b) : m_b(b) { } private: int m_b

    C#实训教程

    3.3 构造函数 60 3.4 结构 65 3.5 部分类 68 3.6 内容总结 72 3.7 独立实践 72 4 继承 73 4.1 继承的类型 73 4.2 结构和类 75 4.3 调用函数的基类版本 76 4.4 抽象类和抽象函数 77 4.5 密封类和密封方法 79 4.6 修饰...

    matlab实验报告(实验6).doc

    " "SIMULINK可用于仿真试验,在这个环境中,无需书写大量程序,只需直观简单的鼠标操作 " ",选取适当的库模块,就可构造出复杂的仿真模型。 " ----------------------- matlab实验报告(实验6)全文共3页,当前为第1...

    asp.net知识库

    C#静态成员和方法的学习小结 C#中结构与类的区别 C#中 const 和 readonly 的区别 利用自定义属性,定义枚举值的详细文本 Web标准和ASP.NET - 第一部分 XHTML介绍 在ASP.NET页面中推荐使用覆写(Override)而不是事件...

    详解python发送各类邮件的主要方法

    python中email模块使得处理邮件变得比较简单,今天着重学习了一下发送邮件的具体做法,这里写写自己的的心得,也请高手给些指点。 一、相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块...

    数字电子计时器设计(自我设计)完整版.doc

    2.1.2电阻器的种类和主要参数 1.电阻器的种类 根据构造,电阻可分为以下几类: 定值电阻:以带电阻物质或线圈构成、且不会因任何环境或人为因素而变量的电阻。 现时常见的定值电阻有颜色条纹用以识别电阻值、误差等...

    学生信息管理系统java课程设计源代码.doc

    JAVA程序设计 课程设计报告 课 题: ...用于" " " "存放表 " " "TableModel tm "自定义一个表模型,用于" " " "更新表数据 " " "public StuQuery(Frame "构造方法,通过传递三个" " "Main,String title ,boolean "参数

    学生信息管理系统java课程设计(含源代码)..doc

    JAVA程序设计 课程设计报告 课 题: ...用于" " " "存放表 " " "TableModel tm "自定义一个表模型,用于" " " "更新表数据 " " "public StuQuery(Frame "构造方法,通过传递三个" " "Main,String title ,boolean "参数

    学生信息管理系统java课程设计.doc

    JAVA程序设计 课程设计报告 课 题: ...用于" " " "存放表 " " "TableModel tm "自定义一个表模型,用于" " " "更新表数据 " " "public StuQuery(Frame "构造方法,通过传递三个" " "Main,String title ,boolean "参数

Global site tag (gtag.js) - Google Analytics