1. 构造方法:构造函数、构造器、构建器-----------------------复用给成员变量赋初值的代码
- 作用:给成员变量赋初值
- 与类同名,没有返回值类型(连void都没有)
- 在创建(new)对象时被自动调用
- 若自己不写构造方法,编译器默认提供一个无参构造方法,若自己写了构造方法,则不再默认提供
- 构造方法可以重载
2. this:指代当前对象,哪个对象调用方法它指的就是哪个对象
只能用在方法中,方法中访问成员变量之前默认有个this.
this的用法:
- this.成员变量名---------------------------访问成员变量
> 当成员变量与局部变量同名时,若想访问成员变量,则this不能省略
- this.方法名()--------------------------------调用方法(一般不用)
- this()------------------------------------------调用构造方法(一般不用)
3. null:表示空,没有指向任何对象。
- 若引用的值为null,则该引用不能进行任何点操作了,若操作则发生NullPointerException空指针异常。
4.引用类型数组:
- 给元素赋值时,需要new个对象
- 若想访问对象的数据,需要通过数组元素去打点来访问
5.继承:
- 作用:代码复用
- 通过extends来实现继承
- 超类/父类:共有的属性和行为
派生类/子类:特有的属性和行为
- 派生类可以访问派生类的+超类的,但超类不能访问派生类的
- 一个超类可以有多个派生类,但一个派生类只能继承一个超类-----------单一继承
- 继承具有传递性
- java规定:构造派生类之前必须先构造超类
- 在派生类的构造方法中若没有调用超类的构造方法,则默认super()调用超类的无参构造方法
- 在派生类的构造方法中若自己调用了超类的构造方法,则不再默认提供
> 注意:super()调用超类构造方法,必须位于派生类构造方法的第一行
画哆啦A梦实例:
JFrame 窗口
package cn_tena.Day03.drowWork;
import javax.swing.*;
/**
* 创建窗体类 jframe
*/
public class StartJFrame extends JFrame {
//新建一个初始化的方法,进行窗体的初始化
public void Init(){
//设置窗口大小
this.setSize(800,600);
//设置窗口居中
this.setLocationRelativeTo(null);
//关闭按钮生效
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//画布添加到画框
StartJPanel sj = new StartJPanel();
this.add(sj);
//更改图标
this.setIconImage(Image.tubiao.getImage());
//窗体显示
this.setVisible(true);
}
public static void main(String[] args) {
StartJFrame startJframe = new StartJFrame();
startJframe.Init();
}
}
JPanel 画布
public class StartJPanel extends JPanel {
@Override
public void paint(Graphics g) {
super.paint(g);
Image.beijing.paintIcon(null,g,0,0);
g.setColor(Color.BLACK);
g.fillOval(266,116,246,231);
//颜色83,164,202
g.setColor(new Color(83,164,202));
//脑袋坐标268,118,242,227
g.fillOval(268,118,242,227);
//颜色
g.setColor(Color.white);
//白脸283,148,221,192
g.fillOval(283,148,221,192);
//嘴巴:326,187,143,126
g.setColor(new Color(126,48,72));
g.fillOval(326,187,143,126);
g.fillOval(321,207,54,68);
g.fillOval(420,207,54,68);
g.setColor(Color.white);
g.fillOval(300,173,184,87);
//眼睛颜色:
g.setColor(Color.black);
g.fillOval(347,126,51,63);
g.fillOval(392,126,51,63);
g.setColor(Color.white);
g.fillOval(348,127,49,61);
g.fillOval(393,127,49,61);
//眼珠子
g.setColor(Color.black);
g.fillOval(375,153,11,17);
g.fillOval(403,153,11,17);
g.setColor(Color.white);
g.fillOval(379,160,4,8);
g.fillOval(406,160,4,8);
//舌头
g.setColor(Color.black);
g.fillOval(347,261,52,45);
g.fillOval(397,261,51,45);
g.setColor(new Color(206,102,91));
g.fillOval(348,262,50,45);
g.fillOval(397,262,50,45);
g.fillOval(360,287,77,26);
//胡子
g.setColor(Color.black);
g.fillOval(302,200,41,41);
g.fillOval(306,209,41,38);
g.setColor(Color.white);
g.fillOval(307,204,53,44);
g.fillOval(304,202,41,38);
g.setColor(Color.black);
g.fillOval(444,200,41,41);
g.fillOval(440,209,41,38);
g.setColor(Color.white);
g.fillOval(427,204,53,44);
g.fillOval(442,202,41,38);
g.setColor(Color.black);
g.drawLine(292,172,350,190);
g.drawLine(292,171,350,189);
g.drawLine(292,173,350,191);
g.drawLine(284,210,351,211);
g.drawLine(284,211,351,212);
g.drawLine(284,209,351,210);
g.drawLine(289,243,351,226);
g.drawLine(289,242,351,225);
g.drawLine(289,244,351,227);
g.drawLine(434,192,486,170);
g.drawLine(434,191,486,169);
g.drawLine(434,193,486,171);
g.drawLine(438,206,500,204);
g.drawLine(438,205,500,203);
g.drawLine(438,207,500,205);
g.drawLine(438,219,499,234);
g.drawLine(438,220,499,235);
g.drawLine(438,218,499,233);
//鼻子
g.setColor(new Color(176,71,84));
g.fillOval(384,174,28,28);
g.setColor(new Color(233,233,234));
g.fillOval(386,178,11,11);
}
图片类:
/**
* 图片类
*/
public class Image {
public static ImageIcon beijing;
public static ImageIcon tubiao;
static {
beijing = new ImageIcon("image/jiu1.jpg");
tubiao=new ImageIcon("image/beijing.jpg");
}
}
成品: