Java学习笔记(3)——继承

继承

  • 概念:继承是类与类的一种关系,是一种"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):用户创建的对象,指的是对象属性的值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值