调用父类的变量和方法

我的职业是看店铺的 2011-06-12 10:47:35
我想调用父类里面的一个方法和变量,但是却一直没办法调用出来,,大家帮忙下
其中在调用的地方我用 //
谢谢了
代码如下

class chessboard extends JPanel
{ /*
private URL blackImgURL = Gobang.class.getResource("black.gif");
private ImageIcon black = new ImageIcon(blackImgURL);
private URL whiteImgURL = Gobang.class.getResource("white.gif");
private ImageIcon white = new ImageIcon(whiteImgURL);
private URL currentImgURL = Gobang.class.getResource("current.gif");
private ImageIcon current=new ImageIcon(currentImgURL); */
public int i, j, k;

public void paintComponent(Graphics g)
{//绘制棋盘
super.paintComponent(g);
g.setColor(Color.BLACK);
for( i = 0; i < 16; i++)
{
for( j =0; j < 16; j++)
{
g.drawLine(50, 50 + j * 30, 500, 50 + j * 30);
g.drawLine(50 + j * 30, 50, 50 + j * 30, 500);
}
}
for ( i = 0; i < 16; i++)
{
String number = Integer.toString(i);
g.drawString(number, 46 + 30 * i, 45);
g.drawString(number, 33, 53 + 30 * i);
}
// updatePaint(g);
}
}

class game extends chessboard
{
//在这里调用chessboard类的i
public int oldx, oldy;
Image black = getToolkit().getImage("black.gif");
Image white = getToolkit().getImage("white.gif");

class XiaZi extends MouseAdapter
{
public void mouseClicked(MouseEvent e)
{
oldx = e.getX();
oldy = e.getY();
}
}

class game_easy extends Applet
{
//就在这里调用chessboard的 i, 和方法paintComponent
}
class game_secondly extends Applet
{
}
class game_difficulty extends Applet
{
}
}
...全文
266 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 inhibitory 的回复:]

class game_easy extends Applet
{
//就在这里调用chessboard的 i, 和方法paintComponent
int x = super.i; // 就在这里调用chessboard的 i
super.repaint(); // 在这会刷新时会调用父类的pa……
[/Quote]
这个方法还是不行!我调用的时候总会提示错误
飞跃颠峰 2011-06-13
  • 打赏
  • 举报
回复
楼主写的是内部类,直接用外部类的变量就可以了
ACDFDFDFDF 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 micsolaris 的回复:]
直接使用变量名字就可以啦。前面不需要添加任何的修饰符。因为变量i是实例变量,而对应的子类并没有重写这些变量,所以都是直接从父类继承的。
[/Quote]
+1
直接使用i就行,没有重写父类的i
安心逍遥 2011-06-13
  • 打赏
  • 举报
回复
extends这个应该不会报错的。楼主检查一下,平常都是这么写的。可能声明有的错了。祝你好运
hepeng_8 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 inhibitory 的回复:]
class game_easy extends Applet
{
//就在这里调用chessboard的 i, 和方法paintComponent
int x = super.i; // 就在这里调用chessboard的 i
super.repaint(); // 在这会刷新时会调用父类的paintComponent,不要直接去调用super.paintComponen……
[/Quote]
内部类
chenchenyangll 2011-06-13
  • 打赏
  • 举报
回复
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JPanel;

public class Test {
public static void main(String[] args) {
// 要使用内部类的话
game g = new game();
game.game_easy ge = g.new game_easy();

g.i = 100;
System.out.println(ge.getI()); // 应该输出100
ge.setI(200);
System.out.println(g.i); // 应该输出200
}
}

class chessboard extends JPanel
{ /*
private URL blackImgURL = Gobang.class.getResource("black.gif");
private ImageIcon black = new ImageIcon(blackImgURL);
private URL whiteImgURL = Gobang.class.getResource("white.gif");
private ImageIcon white = new ImageIcon(whiteImgURL);
private URL currentImgURL = Gobang.class.getResource("current.gif");
private ImageIcon current=new ImageIcon(currentImgURL); */
public int i, j, k;

public void paintComponent(Graphics g)
{//绘制棋盘
super.paintComponent(g);
g.setColor(Color.BLACK);
for( i = 0; i < 16; i++)
{
for( j =0; j < 16; j++)
{
g.drawLine(50, 50 + j * 30, 500, 50 + j * 30);
g.drawLine(50 + j * 30, 50, 50 + j * 30, 500);
}
}
for ( i = 0; i < 16; i++)
{
String number = Integer.toString(i);
g.drawString(number, 46 + 30 * i, 45);
g.drawString(number, 33, 53 + 30 * i);
}
// updatePaint(g);
}
}

class game extends chessboard
{
public int oldx, oldy;
Image black = getToolkit().getImage("black.gif");
Image white = getToolkit().getImage("white.gif");

class XiaZi extends MouseAdapter
{
public void mouseClicked(MouseEvent e)
{
oldx = e.getX();
oldy = e.getY();
}
}

class game_easy extends Applet
{
// 所有的使用也好、调用也好都必须写在方法里,而不是类的声明里
// 所以你上面所有说的“在这里调用”云云的注释全部都标错地方了
// 所以即便你按照楼上大虾的方法写在那里依然报错
public void foo() {
// 使用i
i = 100;
paintComponent(null); // 调用方法,参数你自己写
}

// 你也可以这样
private int bar;
public game_easy() {
bar = i;
}
public void setI(int x) {
i = x;
}
public int getI() {
return i;
}
public int getBar() {
return bar;
}
}
class game_secondly extends Applet
{
}
class game_difficulty extends Applet
{
}
}


LZ看看吧
caili314 2011-06-13
  • 打赏
  • 举报
回复
chessboard.this.i
micsolaris 2011-06-13
  • 打赏
  • 举报
回复
直接使用变量名字就可以啦。前面不需要添加任何的修饰符。因为变量i是实例变量,而对应的子类并没有重写这些变量,所以都是直接从父类继承的。
海归压力大 2011-06-13
  • 打赏
  • 举报
回复
int x = super.i; // 就在这里调用chessboard的 i
super.paintComponent(g);

那就试试直接调用方法呗
Inhibitory 2011-06-12
  • 打赏
  • 举报
回复
class game_easy extends Applet
{
//就在这里调用chessboard的 i, 和方法paintComponent
int x = super.i; // 就在这里调用chessboard的 i
super.repaint(); // 在这会刷新时会调用父类的paintComponent,不要直接去调用super.paintComponent(g); // g是Graphics2D对象
}
  • 打赏
  • 举报
回复
是内部类 但是需要怎么调用呢
chenchenyangll 2011-06-12
  • 打赏
  • 举报
回复
内部类啦~~~~~

62,614

社区成员

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

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