我是不是把Java和JavaScript(ECMA-262)搞混了?

我是不是把Java和JavaScript(ECMA-262)搞混了?,java,methods,casting,graphics2d,Java,Methods,Casting,Graphics2d,我不熟悉Java和JavaScript。在阅读一些Java教程时,我谈到了有关铸造的部分: public void paint (Graphics g) { Graphics2D g2 = (Graphics2D) g; ... } 是组件方法paint将图形对象g投射到对象类{}上,还是我的想法与JavaScript混淆了,函数就是对象 function Graphics() {this.type = 'graphics object'}; var g = new Graph

我不熟悉Java和JavaScript。在阅读一些Java教程时,我谈到了有关铸造的部分:

public void paint (Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    ...
}
是组件方法
paint
图形
对象
g
投射到
对象
{}
上,还是我的想法与JavaScript混淆了,函数就是对象

function Graphics() {this.type = 'graphics object'};
var g = new Graphics();
g.type;
//"graphics object"
Graphics.prototype.g2d = 'g2d object';
g.type;
//"graphics object"
g.g2d;
//"g2d object"
调用
paint(g)
时,是否将
Graphics
属性添加到
{}
,然后将
Graphics2D
属性添加到
Graphics

编辑:从

要在应用程序中使用Java 2D API功能,请将传递到组件渲染方法中的图形对象强制转换为Graphics2D对象


When is says cast
Graphics
to
Graphics2D
是否通过添加额外属性,然后将其称为
g2
?我不确定您对JavaScript的引用是什么,但第一个代码段是将
Graphics
对象转换为
Graphics2D
对象

对象没有改变。与JavaScript不同,Java是强类型的。因此,g一直是一个
Graphics2D
对象。强制转换只是让编译器知道它是一个


此外,您不能在Java中向函数添加属性。

您的问题不太清楚。Java=/=javascript。它们是两种完全不同的语言。强制转换与原型链相似,还是完全不同?有点像,但Java中的继承与JavaScript非常不同。不过,您的思路是正确的-
Graphics2D
is-a
Graphics
对象,从非常、非常一般的角度来看,它就像一个原型链。