继承
构造方法:
- 格式: 以类名为方法名的,没有返回值结构**(void都不要)**
- public 类名(){ }
- 1: 构造方法是在创建对象时调用 new 类名(); new 类的构造方法名();
- 2: 构造方法多用于初始化一个对象: 比如给对象的属性赋值 调用需要提前执行的方法
- 3: 构造方法是每个类都默认自带的一个方法 但是这个构造方法没有参数 以及方法内容
- 4: 可以自己在类中创建构造方法(包括带参数以及不带参数的)
- 方法重载: 在类中可以存在多个同名的方法,格式:参数不一致
// 定义方法的时候,方法重载机制允许一个类中存在多个同名的方法
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);// 调用的是设置按钮图标的构造方法
}
- 5: 使用构造方法可以将赋值的代码提前写好,之后创建对象时,只需要给值就可以了不需要使用对象变量名一个一个的给属性赋值
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;// 初始化给属性赋值
initID();// 初始化调用需要执行的代码
}
public void initID() {
id = System.currentTimeMillis();
}
继承:类与类之间的关系
- 学生类 子类:大学生类,中学生类……
- 上级类是下面的所有类的父类、语法上只能允许一个类直系继承一个类
- 一个对象可以拥有多重身份的 ,拥有的身份之间必须有继承关系
- 格式: public 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(); 必须放在子类的构造方法中第一行