新手在线请教小有关问题,关于继承和抽象类
发布时间:2010-06-05 12:43:21 文章来源:www.iduyao.cn 采编人员:星星草
新手在线请教小问题,关于继承和抽象类
1、关于继承的问题:子类继承了父类得所有方法和变量,那么子类就可以随便使用这些类得,但是有几个疑惑。
在GregorianCalendar类中,他继承了Calendar中的变量和方法:
但是在写程序的时候:
GregorianCalendar d = new GregorianCalendar();
int today = d.get(Calendar.DAY_OF_MONTH);//而不是 int today = d.get(DAY_OF_MONTH)
因为我个人觉得 GregorianCalendar 已经继承了Calendar 中的所有变量了,而且DAY_OF_MONTH是public static final int 这个类型,子类可以使用,如果你给我的解释是因为该类是Calendar 中的变量,GregorianCalendar 虽然继承了该类的变量,但是在内存中GregorianCalendar 的对象实际上是拥有了Calendar 得一个对象,那么调用的时候就要采用这种方法,但是在调用get()函数的时候为什么没有采用Calendar 的对象调用get()而是采用GregorianCalendar 对象调用该函数?
2、关于抽象的问题,马士兵的视频上面说过,abstract类是抽象的类,不能创建对象,但是在如下程序中Graphics 是个抽象类,为什么他还能做为参数使用 public void paint(Graphics g)
import java.awt.*;
class SubPanel extends Panel{
public void paint(Graphics g){
g.drawString("this is a drawing test!",20,20);
g.drawLine(30,60,100,120);
g.draw3DRect(60,50,70,30,false);
}
}
public class AWTDrawing2 {
private Frame f = new Frame(" Hello Out There!");
private SubPanel p = new SubPanel();
public void launchFrame() {
f.add(p);
f.setSize(170,170);
f.setBackground( new Color(89,145,145));
f.setVisible( true);
}
public static void main( String args[]) {
AWTDrawing2 guiWindow = new AWTDrawing2();
guiWindow.launchFrame();
}
}
------解决方案--------------------
1
DAY_OF_MONTH是static的,没有继承一说,该属性属于类级别的,通过类名来访问
2
Grapihc是抽象的,但是awt/swing框架内部会返回Graphic的实际对象实例
你可以做个简单的测试
public void paint(Graphics g){
System.out.println(g.getClass()); //来查看一下Graphic具体是什么对象的实例
g.drawString("this is a drawing test!",20,20);
g.drawLine(30,60,100,120);
g.draw3DRect(60,50,70,30,false);
}
------解决方案--------------------
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Panel
Container 这个里面有paint方法的
该方法将 paint 转发给任意一个此容器子组件的轻量级组件
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
myeclipse上开发j2me的错误提示怎么看(找个好多没有解决的,CSDN能人出来啊......)
对于javame的提示实在无语啊。如下
java.lang.I...
-
命令行执行java程序,含有多个包
我定义了一个java project 叫project1,
然后建立了两个package,(注意都不是jar包)
一个叫animaltestdr...
-
j2me新手问题
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
public class gamestart extends...
-
j2me中如何用代码判断两次pointerPressed之间的时间差?
j2me中如何用代码判断两次pointerPressed之间的时间差?
------解决方案---...
-
通过电脑上wap浏览器可以进入我的wap网站,但是手机不能上,为什么?
我做了wap网站,通过花生壳挂接到外网上了。
通过电脑上wap浏览器可...
-
不含声音文件,如何播放声音?塞班
今天看了一下“飞信JAVA 1.0版”,安装后,信息提示音跟电子音似的。
解压后,发现只有一堆class文件,和...
-
怎么看wtk的源码?高分求助!
我们平时使用eclipse时,点右键选open declaration,或者按F3即可查看源码。现在我建了一个J2ME Midlet工程...
-
如何使用外部js验证下拉列表是否选择
我想使用js对表单进行验证,其中有一个下拉列表,如何验证这个下拉列表在提交的时候已经做过选...
-
关于GUI的一个问题(分不多了,请谅解)
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MyMouseAdap...
-
j2me socket读取服务器中文出乱码
conn = (SocketConnection) Connector.open(addr ,Connector.READ_WRITE);
conn.setSocketOpti...