java方法详解(JAVA update()方法 求详解)

本文目录
JAVA update()方法 求详解
分类: 电脑/网络 》》 程序设计 》》 其他编程语言
问题描述:
如例题
import java.awt.*;
import java.awt.event.*;
class MyCanvas extends Canvas implements MouseListener
{
int left=-1,right=-1;
int x=-1,y=-1;
MyCanvas()
{
setSize(200,200);
setBackground(Color.pink);
addMouseListener(this);
}
public void paint(Graphics g)
{
if(left==1)
{
g.drawString("●",x,y);
}
else if(right==1)
{
g.drawString("○",x,y);
}
}
public void mousePressed (MouseEvent e)
{
x=e.getX();
y=e.getY();
if(e.getModifiers()==InputEvent.BUTTON1_MASK)
{
left=1;
right=-1;
repaint();
}
else if(e.getModifiers()==InputEvent.BUTTON3_MASK)
{
right=1;
left=-1;
repaint();
}
}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e)
{
left=-1;
right=-1;
repaint();
}
public void mouseClicked(MouseEvent e){}
public void update(Graphics g)
{
if(left==1||right==1)
{
paint(g);
}
else
{
super.update(g);
}
}
}
public class Shubiaoshijian
{
public static void main(String args)
{
Frame f=new Frame();
f.setBounds(100,100,300,300);
f.setVisible(true);
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
f.setLayout(new FlowLayout());
f.add(new MyCanvas());
f.validate();
}
}
中的这一部分
public void update(Graphics g)
{
if(left==1||right==1)
{
paint(g);
}
else
{
super.update(g);
}
}
super.update
详细介绍下到底是什么用处的作用
因为这个地方导致整个程序有些不解
解析:
如果left or right !=1那么面板清空!就这个作用!
JavaScrpt对象如何创建和构造函数模式代码详解
javascript面向对象知识很广泛,想深入理解需要花费一些时间
对象的创建:
1 创建一个面向对象
缺点:当我们想创建多个面向对象的时候,重复代码过多,需要封装,所以有了工厂方法。
2 工厂方式
缺点:无法识别创建的对象的类型。因为全部都是Object,没有区分度,不像Date、Array等,因此出现了构造函数模式。
3 构造函数模式
我们通过这二个方面来改变:
函数名首字母大写
这是为了区别于普通的函数,构造函数本身其实就是普通的函数,只是我们专门用它来实现了构造的功能,所以专门起了一个名字叫构造函数,任何函数都可以成为构造函数,这取决于你调用函数的方式,当使用了New的方式调用就成了构造函数。
New 关键字调用
调用函数的时候用了 New关键字,那么New到底做了什么?用不用New有什么区别?再来看下面的例子
我们会发现当用New去调用一个函数的时候,this的指向会不一样。其实New主要做了下面这些事,不过下面写的只是大概的行为,并不是内部源码。
函数构造模式存在的问题:
缺点:可见这两个对象并不是共用一个方法,每new一次,系统都会新创建一个内存,这两个对象各自有各自的地盘,但他们具有相同的功能,还不共用,肯定不是我们所希望的。所以就有了下一种方法,原型+构造模式
4 原型+构造模式
原型:每个函数都有一个prototype属性,它是一个对象,也称作原型对象,我们可以把方法和属性写在它上面(不过原型对象不仅仅有我们写的属性和方法,还有别的,下面会介绍),而通过这个函数创建出来的实例对象,都能共享这个原型对象下的方法和属性。所以我们只需要把想要共享的东西放在函数的prototype下,不想共享的东西通过构造函数来创建就可以了。
看个栗子(原型+构造)
测试为true,可见showName()方法是共享的,也就是说他们共用一个内存,更进一步的说它们存在引用关系,也就是说你更改了p1的showName也会影响p2的showName。

更多文章:
织梦php版本(织梦后台添加文章时,提示标题不能为空,但是,标题、内容和分类都是填好的,是DedeCMS-V5.7-GBK-SP1版本)
2025年6月21日 23:00
form在信封上是什么意思(在信封上面写From与To分别代表哪个英文是收件人,哪个英文是发件人急!先谢谢!)
2026年9月13日 19:30
readprocessmemory资源消耗(readprocessmemory问题)
2026年8月10日 21:00
essentials插件(minecraft 怎么安装Essentials插件)
2026年3月27日 00:45
s11全球总决赛集锦(edg晋级s11决赛(夺取冠军之路))
2026年8月17日 09:00
keyset(Set keys=Map.keyset()怎么理解)
2025年10月20日 14:00
js注册成功跳转页面代码(如何使用JavaScript实现 按钮跳转页面功能)
2026年7月24日 02:45
securities(有关securities, stock, shares, bonds的概念~)
2025年7月8日 15:45
export trade(export trade是什么意思)
2026年5月26日 10:00
css鼠标悬停背景颜色变化(用css样式怎样实现鼠标放在背景图片上,背景图片的颜色改变)
2026年3月17日 16:30
sql中connect的用法(C#中,用SqlConnection怎么连接数据库)
2026年9月2日 22:45
account短语用法(On no account can是什么意思)
2026年5月2日 17:30









