请问简单继承问题,马上给分,谢谢大家!!

newerz 2004-07-16 04:35:28
我想自己写个类继承Layer。
在super那里出错:Can't be access from outsite package.
请问如何改正这个错误,谢谢!

////MyLayer.java
import javax.microedition.lcdui.game.Layer;
import javax.microedition.lcdui.Graphics;

public class MyLayer extends javax.microedition.lcdui.game.Layer {

public MyLayer(){
super(2,2);
}

public void paint(Graphics g){

}
}
...全文
143 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
newerz 2004-07-17
  • 打赏
  • 举报
回复
谢谢mingjava(学习)兄弟的指点,讲得非常详细,明白了。
我这样写的原意想用一个不需要Image的Layer,可以直接用Layer.setVisible(boolean visible)/setPosition(int x, int y)来直接处理已经画好的图像。看来不行了,只能每次移动图像时都重新画的笨方法了。
mingjava 2004-07-16
  • 打赏
  • 举报
回复
抽象类怎么会不能有构造函数呢?这个类就是MIDP2.0中的。先看下面这两个例子

package com.north;

public abstract class Class1
{
String string;

Class1(String s)
{
this.string = s;
}
}

package com.ming;

import com.north.Class1;

public class Class2 extends Class1
{
public Class2()
{
super("ming");
}
}

Class1是抽象类,他可以有构造函数,它可以有抽象方法也可以没有抽象方法。这个程序编译的时候会出现错误,大概的意思就是说Class1(String s)这个构造函数不是public的,不能再包外访问。如果你把Class1(String s)声明称public or protected的那么这个程序就可以正确的编译了!当new 一个类的时候,首先虚拟机去调用他父类的构造函数,在本题中你继承了Layer,并在你的类内部调用了super(int i,int j),但是当虚拟机去掉用它的时候发现他和你的程序并不在一个包内。而Layer的构造器前面没有访问修饰,也就是default的,是包内可以访问的。因此他不能访问这个构造器也就不能生成父类,Layer的确不是设计用来被我们继承的,但是你可以继承Sprite或者TiledLayer,它们都是实现了Layer的。
newerz 2004-07-16
  • 打赏
  • 举报
回复
to flyxxxxx(灭神):已经包含了。
to maowu(猫呜):这个就是标准midp2.0的Layer啊。
to mingjava(学习):这样是否就不能继承他了呢?
to youngplayer(我还是我): Layer.java反编译如下:

请继续讨论,谢谢大家!!!

// Source File Name: Layer.java
package javax.microedition.lcdui.game;
import javax.microedition.lcdui.Graphics;
public abstract class Layer
{
Layer(int width, int height)
{
visible = true;
setWidthImpl(width);
setHeightImpl(height);
}
public void setPosition(int x, int y)
{
this.x = x;
this.y = y;
}
..........
sunny110 2004-07-16
  • 打赏
  • 举报
回复
mark
haozhangpk 2004-07-16
  • 打赏
  • 举报
回复
关注!!!
youngplayer 2004-07-16
  • 打赏
  • 举报
回复
抽象类有构造函数吗? 我怎么记得是没有的啊?
mingjava 2004-07-16
  • 打赏
  • 举报
回复
Layer这个抽象类 它的构造器的访问控制符是default的 也就是说是包内可见的!
因此你在你的project里面继承他的时候 是不能调用它的构造器的!因为他们不再一个包内
maowu 2004-07-16
  • 打赏
  • 举报
回复
把javax.microedition.lcdui.game.Layer 贴出来看看啊。
flyxxxxx 2004-07-16
  • 打赏
  • 举报
回复
javax.microedition.lcdui.game.Layer和javax.microedition.lcdui.Graphics没在classpath中

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧