区别重写和重载
重载
- 应用环境:同一个类中,多个重名方法
- 结构:访问修饰符——返回值——方法名——传入参数。
- 访问修饰符 :一致。
- 返回值类型:可以不一样,但是一定要基于参数不同(参数不同代表已经实现了重载)。
- 方法名 :一致。
- 参数 :不一致(个数或类型)。
- 构造方法的重载 :通过参数不同的方法实现构造方法重载。
通过传参个数不同调用实现不同的方法。
重写
- 应用场景:子类重写父类方法。
- 结构:访问修饰符——返回值——方法名——传入参数。
- 访问修饰符:可以大于等于父类。
- 返回值类型:一致。
- 方法名:一致。
- 参数:一致。
- 构造方法的重写:不允许重写。
- 子类会自动继承父类的空参数构造方法。
- 如果父类只有一个非空参数的构造方法,就要通过在子类写构造方法,并填上合适的传参,用super(传参值);来调用父类的构造函数。
class ClassSuperSuperSuper{
int a;
ClassSuperSuperSuper(int a){
System.out.println(a+"空参数 ClassSuperSuperSuper");
}
}
class ClassSuperSuper extends ClassSuperSuperSuper{
int b;
ClassSuperSuper(int a){
super(a);
System.out.println(a+"空参数 ClassSuperSuper");
}
}
// 父类 extends ClassSuperSuper
public class ClassSuper extends ClassSuperSuper{
int c;
ClassSuper(int a){ // 构造方法具有唯一性 只有一个且带参数
super(a); //传值
System.out.println(a+" 空参数 ClassSuper ");
}
public void superMethod(){
System.out.println("父类的方法");
}
}
class ClassA extends ClassSuper{
int d;
ClassA(int a){
super(a); // 会进行初始化
System.out.println(a+"子类ClassA");
}
// 重写父类的方法
public void superMethod(){
super.superMethod();
System.out.println("子类重写的方法");
}
public static void main(String[] args) {
ClassA ca = new ClassA(729);
ca.superMethod();
}
}
画笔与界面显示的顺序关系
界面显示setVisible()方法调用之后才会分配资源,因此先显示再设置画笔才有用,否则画笔就为空。