gpt4 book ai didi

java - 如何在 Java 中使用 super ?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:37:20 24 4
gpt4 key购买 nike

你能帮我看看如何在 Java 中使用 super (super.paintComponent(g);) 关键字吗。

我们可以在 Java 的 paintComponent 方法中使用 super 关键字吗?如果我们在 main 方法中使用 super 会怎样。有可能吗?

File Drawrainbow.java
package com.company;

import javax.swing.*;
import java.awt.*;

public class DrawRainbow extends JPanel {
// define indigo and violet
private final static Color VIOLET = new Color(128,0,128);
private final static Color INDIGO = new Color(75,0,130);

//colors to use in the rainbow, starting from innermost
// the two white entries result in an empty arc in the center

private Color[] colors ={Color.WHITE, Color.WHITE, VIOLET,INDIGO,Color.BLUE,Color.GREEN,Color.YELLOW,Color.ORANGE,Color.RED};

//constructor
public DrawRainbow(){
setBackground(Color.WHITE); // set the background to while
}

// draws a rainbow using concentric arcs
public void paintComponent(Graphics g){
super.paintComponent(g);

int radius = 20; // radius of an arc

// draw the rainbow near the bottom-center
int centerX = getWidth()/2;
int centerY = getHeight() - 10;

// draws filled arcs starting with the outermost
for (int counter = colors.length; counter > 0; counter--){
// set the color for the current arc
g.setColor(colors[counter-1]);

//fill the arc from 0 to 180 degrees
g.fillArc(centerX-counter*radius,
centerY-counter*radius,
counter*radius*2,counter*radius*2,0,180);
}
}
}

File Test.java


package com.company;

import javax.swing.*;

public class Main {

public static void main(String[] args) {
// write your code here

DrawRainbow panel = new DrawRainbow();
JFrame application = new JFrame();

application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.add(panel);
application.setSize(400,250);
application.setVisible(true);
}
}

最佳答案

这里:

> super.paintComponent(g);

在您的 DrawRainbow 实例上,您正在调用继承自 DrawRainbow 父类(super class)的 paintComponent() 的“原始”实现。

换句话说:当你面临需要时

  • @Override 父类(super class)方法
  • 但有时会调用“原始”实现

然后你像那样使用 super。

注意:主要方法是static。静态方法不是继承的,因此没有必要执行 super.main() (或任何其他静态方法)。准确地说:您不能覆盖静态方法,如果有的话,您只能“隐藏”它们。

相反,如果您想这样做,您可以说 MySuperClass.main()

关于java - 如何在 Java 中使用 super ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56162297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com