目录
1.什么是继承
1.继承(Inheritance):面向对象的三大特性之一
2.定义
一个类获取现有类的所有属性和行为的机制
创建基于现有类的新类,可以重用现有类的属性和方法
可以在线创建的子类中添加新属性和方法
3.作用
有效的解决了代码重用的问题,是代码扩展更加灵活
从始至终完成的体现了一个应用系统,逻辑更加清晰
增加软件的可扩展性,以适应不同的业务需求
2.在何处使用继承
1.何时使用继承?
1.1继承与真实世界类似
1.1.1只要说"苹果树是作物",苹果树的很多属性,行为就不言自明了
1.1.2富士是一种苹果树
符合is-a关系的设计使用继承
1.2继承是代码重用的一种方式
将子类共有的属性和行为放到父类中
3.如何使用继承
使用继承
编写父类
[访问修饰符] class <SuperClass>{
//属性
//方法
}
编写子类,继承父类
示例
public class Animal {
public void eat() {
System.out.println("动物正在吃食物");
}
}
public class Dog extends Animal {
public void bark() {
System.out.println("狗在汪汪叫");
}
}
public class Test{
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat(); // 调用继承自Animal类的eat方法
dog.bark(); // 调用Dog类自己定义的bark方法
}
}
输出
4.理解继承
4.1 子类可以继承父类的所有资源吗
4.2访问修饰符protected
可以修饰属性的方法
本类,同包,子类可以访问
访问修饰符总结
转义字符 | 本类 | 同包 | 子类 | 其他 |
---|---|---|---|---|
private | √ | |||
默认 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
5.方法重写
5.1方法的重写或方法的覆盖(Overriding)
在子类中,根据需求对从父类继承的方法体进行重新编写,自实现子类需求
5.2必须遵守的规则
- 重写方法和被重写方法必须具有相同的
方法名
- 重写方法和被重写方法必须具有相同的
参数列表
- 重写方法返回值类型必须和被重写方法的
返回值类型
相同或为其子类
- 重写方法不能缩小被重写方法的
访问权限
示例
public class Animal {
public void sound() {
System.out.println("动物发出声音");
}
}
public class Dog extends Animal {
@Override
public void sound() {
System.out.println("狗在汪汪叫");
}
public void sound(int num) {
for (int i = 0; i < num; i++) {
System.out.println("狗在汪汪叫");
}
}
}
public class Test{
public static void main(String[] args) {
Dog dog = new Dog();
dog.sound(); // 调用重载后的sound方法
dog.sound(3); // 调用重载后的sound方法,传递参数3
}
}
输出结果
方法重载与方法重写
. | 位置 | 方法名 | 参数表 | 返回值 | 访问修饰符 |
---|---|---|---|---|---|
方法重载 | 同类 | 相同 | 不相同 | 无关 | 无关 |
方法重写 | 子类 | 相同 | 相同 | 相同或是其子类 | 不能必父类更严格 |