继承

  • 概念:继承是类与类的一种关系,是一种"is a"的关系,在Java中继承都是单继承。
  • 优点:
  1. 子类拥有父类的属性和方法,
  2. 实现代码的复用。
方法的重写
  • 概念:当子类继承父类的方法时,可以重写父类的方法,当调用时会优先调用子类的方法。
  • 语法规则:
  1. 返回值类型相同;
  2. 方法名相同;
  3. 参数类型及个数相同。

重写和重构的区别:

方法

重写

重构

使用范围

继承关系的父类和子类

同一个类下

返回值类型

相同

可以不相同

方法名

相同

相同

参数类型

相同

相同

参数个数

相同

不同

  • 继承的初始化顺序
  1. 先初始化父类,再初始化子类;
  2. 先执行初始化对象的属性,再执行构造方法。
package com.java.test

public class Parents{
	public String name = "Tom";
	public Parents(){
		name = "Jary";
		System.out.println("Parents构造方法");
	}
}
package com.java.test

public class Students extends Parents{
	public Students(){
		System.out.println("Students构造方法");
	}
}
package com.java.test

public class HelloWorld {
	public static void main(String arg[]){
		Students s = new Students();
		System.out.println("The student's name is " + s.name);
	}
}
final关键字
  • 概念:使用final关键字做标识,有“最终”的意思,意味着被修饰的事件不可更改。
  • 范围:
  1. 修饰类:被修饰的类不可被继承;
  2. 修饰方法:该方法不能被重写;
  3. 修饰属性:该属性不会被系统自动初始化;
  4. 修饰变量:被修饰的变量的值不能更改,所以也可称被final修饰的变量为常量。
super关键字
  • 概念:在对象的内部使用,用来表示对象的父类。例如:访问父类的属性super.value,访问父类的方法super.function()
  • 应用:
  1. 子类的构造方法中必然会调用父类的构造方法,若子类没有用super()调用父类的构造方法,系统会自动调用父类的无参的构造方法,若此时父类没有定义无参的构造方法,那么编译会报错;
  2. 子类如果显式的调用父类的构造方法,那么必须放在该方法的第一行。

例:

public Students(){
	super();
}
Object类
  • Object类是所有类的父类,在没有明确声明继承某一个类的时候,该类默认继承Object类。Object类中的方法适用于所有类。
  • toString()方法
    在Object类中,定义toString()方法返回对象的HashCode(对象地址字符串)。如果想要直接输出对象的属性,可以重写toString()方法,以达到输出对象属性的要求。
  • equals()方法
    equals()比较两个对象是否相等,这里的相等是判断是否指向同一个内存地址。用户创建的对象并不是指对象本身,而是对象所存在的内存地址,所以Object类中的equals()方法本质上是比较对象所在的地址是否相同。
    但在实际使用中,用户判断两个对象是否相等,是判断对象的属性是否相等,所以我们就需要重写equals()方法,使其判断对象的属性是否相等。

例:

@Override
	public boolean equals(Object obj) {
		//比较两个类引用的地址是否相同,若相同则判定两个对象相等
		if (this == obj)
			return true;
		//若要比较的对象为空,则直接判定两个对象不相等
		if (obj == null)
			return false;
		//判断两个类对象是否相等
		if (getClass() != obj.getClass())
			return false;
		//若两个对象的类型不同先将其转换为统一类型,在比较两个类的属性值是否相同
		Students other = (Students) obj;
		if (age != other.age)
			return false;
		return true;
	}

注:

  1. 类对象(obj.getClass()):指的是类的属性,例如name,age,num等成员变量;
  2. 类的对象(obj):用户创建的对象,指的是对象属性的值。