A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 姚伟涛 中级黑马   /  2012-4-18 11:32  /  1329 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.awt.Canvas;  
  2. import java.awt.Graphics;  

  3. import javax.swing.ImageIcon;  

  4. public class gameBack extends Canvas{  
  5. public gameBack(){  
  6. System.out.println("canvas construction");  
  7. }  
  8. public void paint(Graphics g){  
  9. System.out.println("canvas paint");  
  10. }  
  11. public static void main(String[] args) {  
  12. gameBack gb = new gameBack();  
  13. gb.setVisible(true);  
  14. }  
  15. }  

复制代码
运行程序..觉得应该打印什么?  
实际上只打印了construction..没paint;  
有人知道原因吗?

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

2 个回复

倒序浏览
gameBack gb = new gameBack();默认调用了无参的构造函数,如果想要输出paint的话,可以这样在GameBack gb = new GameBack();后面添加
                Graphics g = null;
                gb.paint(g);就行了
回复 使用道具 举报
gameBack gb = new gameBack(); 在new出gb这个对象时,由于括号里没参数,所以调用无参的构造方法,打印输出construction..,new出对象后,没有调用paint方法,所以没打印输出canvas paint ,想要打印输出canvas paint,必须在new出根本对象后面添加面添加
                Graphics g = null;   \\声明变量
                gb.paint(g); \\调用paint方法
这样就打印输出canvas paint
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马