构造对象
- 构造对象的格式:以类名为方法名,没有返回值结构(void也没有)
- public 类名(){}
- 1.构造方法是在创建对象时调用new类名();new类的构造方法名
- 2.构造方法经常用于初始化一个对象:比如给对象赋值。调用需要提前执行的方法。
- 3.构造方法是每个类都默认自带的一个方法,但是这个方法没有参数和方法内容
- 4.可以在自己的类中创建构造方法。
方法重载:
-
在类中可以存在多个同名方法,但是参数不能一样
-
参数不一样的情况:
-
数量、类型、顺序
-
基于方法重载机制,一个类可以构造多个方法,但参数不能一样
-
用于创建对象时,可以选择比较合适的创建方式,比如带文本的按钮,或者是带图片的按钮。
-
使用构造方法时,可以将赋值的代码提前写好,之后创建对象时,直接调用赋值,不需要使用对象变量名一个个赋值。
注:想要理解构造方法,可以多看看JFrame,JButton的源代码。
以下为代码演示
public class User {
// 在类中可以定义属性和方法
String name;
int age;
long id;
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;// 初始化给属性赋值
initID();// 初始化调用需要执行的代码
}
public void initID() {
id = System.currentTimeMillis();
}
// 定义方法的时候,方法重载机制允许一个类中存在多个同名的方法
public void setInfo(String name) {
this.name = name;
}
public void setInfo(String name, int age) {
this.name = name;
this.age = age;
}
public void setInfo(int age) {
this.age = age;
}
public static void main(String[] args) {
JFrame jf = new JFrame();
// jf.setSize
JButton btn = new JButton("登录");// 调用的是设置按钮文本的构造方法
ImageIcon icon = new ImageIcon();
JButton btn1 = new JButton(icon);// 调用的是设置按钮图标的构造方法
}
}
继承:类和类之间的那些事
- 学生类
- 大学生类
- 计科专业大学生类
- 计科大学生小明
- 上级类是下面所有类的父类,语法上只允许一个类直系继承一个类
- 小明是计科专业大学生
- 小明是一个大学生
- 小明是一个学生
注:一个对象可以拥有多重身份,但是拥有的身份之间必须要有继承关系
格式:publi class 子类名extends父类名{}
- 子类可以继承父类的什么?(回答这个问题的前提是需要知道这个类里有哪些不同的代码)
- 主要是成员属性和方法,但是构造部分内容联代调用,静态资源共享。
一个类里可以定义什么?
与对象相关的:
- 成员属性:子类继承
- 成员方法:子类继承
- 构造方法:没继承,但是子类创建对象时在调用自己的构造方法之前会先调用父类的构造方法
- 构造代码块:向上联代调用:子类在创建对象时,父类的构造代码块都会执行。
与类相关但与对象无关的: - 静态属性:子类继承,但是子类、父类共用一个静态属性。
- 静态方法:子类名也可以直接调用
- 静态代码块:只在第一次加载时执行,且只执行一次
以下为演示代码
// 一个类中可以定义什么
public class Student {
// - 与对象相关的:
// - 成员属性: 对象调用才可以使用
String name;
// - 成员方法: 对象名调用
public void setName(String name) {
this.name = name;
}
// - 构造方法: 创建对象时执行
public Student() {
System.out.println("Hello 我是构造方法");
}
// - 构造代码块: 创建对象时执行
{
System.out.println("Hello 我是构造代码块");
}
// - 与类有关的,与对象无关
// - 静态属性: 与类绑定,在内存中只会创建一份 类名可以直接调用
static int count;
// - 静态方法:
public static void staticMethod() {
System.out.println("Hello 我是静态方法,可以被类名调用");
}
// - 静态代码块
static {
System.out.println("Hello 我是静态代码块 一个程序运行过程中只执行一次");
}
}
方法重写
- 在子类中重写父类的方法,进行扩展改造方法体,但是保持与父类方法的格式一致。
- 子类如果重写了父类的方法,子类中以及子类的对象会优先调用重写后的方法
- 子类如果重写了方法后,还是需要调用父类的方法,可以使用super进行调用
- super关键字,在子类中指代父类,可以调用父类的属性、方法以及构造方法
- 属性和方法的调用格式:super.属性名 super.方法名()
- 调用构造方法的格式:super();必须放在子类的构造方法的第一行