《面向对象高级特性(继承)》
目录
一、Java继承
- 官方定义:子类继承父类,实现代码的复用;
- 通俗理解:省点代码,重复的代码可以写到父类中,子类继承即可获得其变量及方法。
- 注意点:Java仅支持单继承,即一个类有且只能有一个直接父类;
- 万类之祖:Object(Object是所有类的超类,当一个类没有指定直接父类,那它的父类就是Object)。
案例一

- 动物类
package com.hpr.entity;
public class Animal {
protected String name = "动物";
protected int age = 1;
protected void speak() {
System.out.println("动物讲话方式");
}
protected void sleep() {
System.out.println("动物睡觉方式");
}
protected void eat() {
System.out.println("动物吃东西方式");
}
}
- 猫类
package com.hpr.child;
import com.hpr.entity.Animal;
public class Cat extends Animal {
public void output() {
System.out.println("名称:" + name + ",年龄:" + age);
speak();
}
}
- 测试类
package com.hpr.test;
import com.hpr.child.Cat;
public class Test {
public static void main(String[] args) {
Cat cat = new Cat();
cat.output();
}
}
执行结果

二、变量隐藏与方法重写
变量隐藏(当子类定义了与父类同名的变量,原继承来的变量就会被隐藏)
- Cat类添加以下全局变量,并再次运行测试类
...
public class Cat extends Animal {
public String name = "猫";
public int age = 2;
...
}
执行结果

方法重写(Override)(子类重写继承来的父类方法,对其业务实现过程重新编写)
- Cat类重写speak方法,并再次运行测试类
public class Cat extends Animal {
...
@Override
public void speak() {
System.out.println("猫咪正在喵喵喵...");
}
}
执行结果

注意事项
- 方法名、形参、返回值类型必须与原先相同;
- 访问修饰符可更公开,但不能更私有;
- 重写的方法不能比原方法抛出更多异常。
super关键字(调用父类可访问的构造、变量、方法)
如上例所示,子类可通过变量隐藏及方法重写进行差异性增强,但隐藏或重写后想要再次调用原先方法及变量,就需要使用super关键字。
- 修改Cat类output方法,并再次运行测试类
public void output() {
System.out.println("名称:" + name + ",年龄:" + age);
speak();
//新添加
System.out.println("原名称:" + super.name + ",原年龄:" + super.age);
super.speak();
}
执行结果

三、toString方法
打印输出对象时,默认会调用该对象的toString方法,该方法继承于Object类,默认打印十六进制内存地址哈希码,在此我们可以重写它。
- Object类
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
- 测试类
System.out.println(new Animal()); //输出结果:com.hpr.entity.Animal@4554617c
- 重写Animal类toString方法
生成toString方法:鼠标右键——>Generate...——>toString()——>选择字段——>点击OK完成。
...
public class Animal {
...
@Override
public String toString() {
return "Animal{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
- 再次测试
System.out.println(new Animal()); //输出结果:Animal{name='动物', age=1}
四、final关键字
final关键字修饰即为最终定义:
- 修饰类:该类不可被继承(如String类);
- 修饰变量:该变量值将不可被改变(即常量);
- 修饰方法:该方法将不可被重写。
总结
重点
- 继承概念及代码实现方式;
- 变量隐藏及方法重写;
- super关键字;
- final关键字。
难点
- 变量隐藏及方法重写;
- super关键字。
文章介绍了Java中的继承机制,包括单继承、Object类作为所有类的超类。通过实例展示了变量隐藏和方法重写的概念,以及如何使用super关键字调用父类成员。此外,还讨论了toString方法的默认行为和重写,以及final关键字在类、变量和方法上的应用。
128

被折叠的 条评论
为什么被折叠?



