接口与多态
接口
- 一种特殊的类,是一种抽象类的延伸。
- 接口之间允许继承而且允许多重继承---一个接口可以继承多个接口。
- 接口只写方法就可以了。
- 接口中定义的方法必须被定义为public或abstract形式,其他修饰权限不被Java编译器认可。
- 接口是可以多实现的:因为接口中的方法都是抽象的,都没有实现,在创建子类对象并调用该重写的抽象方法时,很明显就是调用重写之后的方法,不会出现调用的不确定性。
- 注意:类与类之间是继承关系 ,通过继承可以得到继承体系的基本功能。接口与接口之间是实现关系,通过实现接口可以得到继承体系之外的功能。
实例
- 一个简单的音乐家的接口,写和音乐家相关的方法(弹钢琴和拉小小提琴)。
public interface Musician {
void playPiano();
void palyViolin();
}
窗口的实现
1、创建一个类去继承JFrame这个父类。
2、在该类的构造函数中对窗口的一些基本属性进行初始化操作。
public MyFrame() { // 构造函数 窗口的初始化。
this.setSize(300, 200); // 窗口大小的设置
this.setResizable(false); // 定义窗口大小是否被改变。
this.setLocationRelativeTo(null); // 窗口的放置位置。
this.setDefaultCloseOperation(EXIT_ON_CLOSE); // 关闭即退出。
this.setLayout(null); // 不要布局管理器
}3、在窗口上添加文本组件
JTextField jTextField = new JTextField("你好瓜",90);
jTextField.setFont(new Font("楷体",Font.CENTER_BASELINE ,20));
jTextField.setBounds(50, 50, 200, 80);
this.add(jTextField);4、在窗口上添加标签组件
JLabel jLabel = new JLabel("傻不傻");
jLabel.setFont(new Font("楷体", Font.BOLD, 18));
jLabel.setBounds(225,100, 200, 600);
JCheckBox jCheckBox = new JCheckBox("1");
jCheckBox.setBounds(225,100, 200, 50);
this.add(jCheckBox);-
5、在窗口上添加按钮组件并创建按钮的事件监听器
JButton jButton = new JButton("按下有惊喜");
jButton.setFont(new Font("楷体", Font.BOLD, 16));
jButton.setForeground(Color.BLUE);
jButton.setBackground(Color.RED);
jButton.setBounds(225, 300, 200, 50);
this.add(jButton);
jButton.addActionListener(e -> {
JOptionPane.showMessageDialog(null, "你好傻!!"); // 消息提示面板});
6、窗口上Timer的创建与应用
Timer timer = new Timer(10, e->{
for (int i = 0; i < total; i++) {
SmallBall smallball = ballarray[i];
smallball.move();
repaint(); //回调paint()方法,即改变x,y值后再重新渲染一次。} }); timer.start();7、双缓存让窗口上的动画更加的流畅
private BufferedImage image = new BufferedImage(700, 700, 1);
public void paint(Graphics g) {
// TODO Auto-generated method stub
Graphics otherg = image.getGraphics();
super.paint(otherg);
// otherg.setColor(Color.BLUE);
// otherg.fillOval(x<700?x:700-(x-700), y<700?y:700-(y-700), 40, 40);
for (int i = 0; i < total; i++) {
SmallBall smallball = ballarray[i];
smallball.draw(otherg);
}
g.drawImage(image, 0, 0, null);
}-
8、随机获得颜色
public Color randomColor() {
int red = (int) (Math.random() * 256);
int green = (int) (Math.random() * 256);
int blue = (int) (Math.random() * 256);
return new Color(red, green, blue);
}