1: 在类中把自己实例化class a{ public main(args []){new a();
}
...
}
经常见到这样的情况,是不是MAIN函数里面的东东不算是这个类的内容啊? 这样解析好象行得通,但是它的代码确实在类定义里面啊!2: 继承Frame 类,然后把paint方法覆盖掉,这时候这方法还有啥用的啊 ?...
paint(Graphics g){
g.drawXX;
}这样
跟直接的一条
g.drawXX 这样的代码
有什么区别?
Graphics既然是一个抽象类那为什么可以得到实例?
还有这接口什么用的? 都是一些空方法阿最后一个问题就是题目所提的
类库跟API有什么区别啊?
我的理解是:API是一些由SUN用汇编或者其他什么鸟语言编写好的一些函数,专供程序员调用.程序员看不到里面的代码,也不能用JAVA语言编写出另外一些API.
类库则不同,它们是用现成的API写成的一些大多数程序都会用到的公共代码,避免重复的劳动.我的疑惑是:
举个例吧,class Frame{
Frame(){..
}
Frame(){..
}
.....
}
这明明就是一个类啊,但为什么会是API呢?
如果不是API,那么这么简单几句话是无论如何也不会有那么强大的功能吧?
就算是继承与WINDOWS类,但是WINDOWS类又去哪里来的功能呢?
如果不去继承这些类,我想程序员无法编写一些这样的类.写得很乱,感谢你把我写的都看完了.希望有心人,提点提点! 谢谢
}
...
}
经常见到这样的情况,是不是MAIN函数里面的东东不算是这个类的内容啊? 这样解析好象行得通,但是它的代码确实在类定义里面啊!2: 继承Frame 类,然后把paint方法覆盖掉,这时候这方法还有啥用的啊 ?...
paint(Graphics g){
g.drawXX;
}这样
跟直接的一条
g.drawXX 这样的代码
有什么区别?
Graphics既然是一个抽象类那为什么可以得到实例?
还有这接口什么用的? 都是一些空方法阿最后一个问题就是题目所提的
类库跟API有什么区别啊?
我的理解是:API是一些由SUN用汇编或者其他什么鸟语言编写好的一些函数,专供程序员调用.程序员看不到里面的代码,也不能用JAVA语言编写出另外一些API.
类库则不同,它们是用现成的API写成的一些大多数程序都会用到的公共代码,避免重复的劳动.我的疑惑是:
举个例吧,class Frame{
Frame(){..
}
Frame(){..
}
.....
}
这明明就是一个类啊,但为什么会是API呢?
如果不是API,那么这么简单几句话是无论如何也不会有那么强大的功能吧?
就算是继承与WINDOWS类,但是WINDOWS类又去哪里来的功能呢?
如果不去继承这些类,我想程序员无法编写一些这样的类.写得很乱,感谢你把我写的都看完了.希望有心人,提点提点! 谢谢
1:不是public main(String arg[])
而是public static void main(String arg[])
即main是静态方法,独立于class的,查些有关静态的概念把,至于为什么要放在class中,那是因为java语法中,方法必须定义在一个类中,就是说规定如此吧。2:涉及方法覆盖、继承、接口、抽象类等概念,一句话说不清了,看书或者以前帖子吧3:此api非彼api
api本身是个抽象的概念,称为应用程序接口。在微软概念里有两个,一个就是windows api,为程序员提供了访问window系统的通用接口函数,可以被c、delphi、vb等调用,另一个就是类库,如mfc,
而在java里api就是类库,只是用了这个名字而已。
计算机里很多概念是没有明确定义的,甚至是交错的,典型的还有线程和进程问题,所以如果仅是做应用程序不要太钻概念了。概念的东西说多了就糊涂,也有些乱,不当之处希望指正
但是还是有很多不明白,书上一般都只是讲如何去用这些API(或者什么),却没有说这些API如何得来,没有个依据,用起来就象在抄袭代码一样.去图书馆看了一些JAVA技术精髓之类的书,看不懂,就象看天书! trumple说的:Graphics本身是抽象类,但可以通过继承而得到它的子类,这个子类(如上面的g)是VM构造出来的,你也不用管它什么“空方法”,虚拟机在构建子类时就会实现这些方法的。
这说出了得到Graphics实例的可能性,但是还是很难明白具体如何来的.难道JAVA里面的有些现象不能用JAVA语言本身的规则去解析吗? 例如在Frame的某个子类定义里,
....
paint(Graphics g){
g.drawXX;
}
...这不是把本身的paint方法覆盖掉了,原来定义的代码全部都被冲掉了吗?
那么这跟下面的代码有何区别呢?
....
shit(Graphics g){
g.drawXX;
}
...
至于paint方法,如果你的子类的paint方法与父类不同,你可以重新定义你的paint方法,这是方法重载。这在有多个子类时很有用。
这两个问题都是与继承有关,你看来对面向对象还不了解,应该再找本书仔细看看。
new a();实例化一个类,这时,你就可以访问这个实例里其它不是static的方法。