构造方法&&方法重写

构造方法

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();
	}
}
posted @ 2022-07-28 10:56  zx墨染  阅读(222)  评论(0)    收藏  举报