构造方法&&方法重写
构造方法
1、定义:
构造方法(Constructor)的名称和类名相同,没有返回值类型。
2、作用
类中的特殊方法,用于创建对象,在创建对象的时候会执行一些初始化操作。例如:给成员变量赋初值。
3、格式
格式:
类名([参数...]){}
注意:格式问题
(1)构造方法的方法名与类名完全相同
(2)构造方法没有返回值
(3)创建对象时,触发构造方法的调用,不可手动调用
(4)如果没有声明构造方法,编译器默认生成无参构造
(5)如果定义了有参构造方法,编译器就不会创建无参构造方法
强制要求:
无论什么时候,都要加上一个无参构造方法!!!
4、构造方法的使用:
// 自定义有参构造方法,并给name属性赋值
Dog(String n) {
name = n;
}
// 自定义无参构造方法
Dog(){}
5、构造方法的重载
public Dog(String n){
name = n;
}
public Dog(String n, int i){
name = n;
age = i;
}
6、this关键字
(1)概述:this代表所在类的对象引用,即当前对象
new创建出来的对象
调用方法的对象
(2)作用:
(3)格式:
格式:
this([参数...]);
会根据参数列表调用对应的构造方法
//-----------------------------------------------------
public Rabbit(String color) {
// 调用本来中的属性
this.color = color;
}
public Rabbit(String color, int age, double weight) {
// 调用本类中的其他构造方法
this(color);
this.age = age;
this.weight = weight;
}
注意:
1、this()只能在构造方法中使用
2、this()只能在第一行
3、构造方法中不能同时出现两个this()
4、不能自己调用自己,不能相互调用
5、this可以调用本类中的属性和方法,最常用与区分成员变量和局部变量
7、规范化this
- this表示的是当前对象
- this可以调用本类中的属性和方法,最常用于区分成员变量和局部变量
- this还可以调用本类中的构造方法,但是要注意有坑
class Son {
String name;
int age;
float salary;
public Son() {
}
public Son(String name) {
// 调用Son(String name, int age, float salary)
this(name, 0, 0.0F);
}
public Son(String name, int age) {
// 调用Son(String name, int age, float salary)
this(name, age, 0.0F);
}
public Son(String name, int age, float salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
}
方法重写【Override】
1、要求
(1)应用于继承和实现接口
(2)返回值类型,方法名,形参列表与父类一致
(3)使用@Override注解来标识
(4)重写方法的访问修饰符权限不能低于父类
private < 默认(什么都不写) < protected < public
2、优点
即沿袭了父类的方法名,又实现了子类的扩展
3、总结
(1)方法的重写能够在不新增方法的情况下实现子类的扩展
(2)方法重写要求方法声明格式和父类完全一致(访问修饰符不能小于父类)
(3)@Override关键字用来开启格式检测,如果不一致就会报错
举例:
public class Son extends Father{
public int age;
@Override
public void game() {
System.out.println("玩红色警戒");
}
public void study() {
System.out.println("子类 -- 学习");
}
}
public class Father {
public String name;
private int suffer;
public void game() {
System.out.println("下棋");
}
private void cook() {
System.out.println("做饭");
}
}
public class Demo1 {
public static void main(String[] args) {
Son son = new Son();
son.game();
}
}

浙公网安备 33010602011771号