第四次课后预习作业
- 什么是类的继承?它有什么作用?
在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称为子类,现有类被称为父类,子类会自动拥有父类所有可继承的属性和方法。在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。
在类的继承中有四点需要注意
- 在Java中,类只支持单继承,不允许多重继承,也就是说,一个类只能有一个直接父类。下面为一个错误样例:
class a{}
class b{}
class c extends a,b{}//c类不可以同时继承a类,b类
- 多个类可以继承一个父类。如:
class a{}
class b extends a{}
class c extends a{}//b类,c类都可以继承a类
- 类可以进行多重继承。如:
class a{}
class b extends a{}
class c extends b{}//b类继承a类,c类继承b类
- 在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以说是另一个类的子类。例如上面的示例,b类既是a类的子类,也是c类的父类。
什么是方法的覆盖和重载?方法的覆盖与方法的重载有什么区别?
方法的重载:简单来说,在同一个类下,两个功能相同的,但方法名不同,参数不同,重载成共同一个方法名相同,但参数列表不同的方法。
class A
{
void f(); //#1
void f(int a); //#2
void f(double a); //#3
}
方法的覆盖:当子类继承父类以后,在子类中能创建一个与父类有不同功能的方法,但是能够具有相同的名称,返回值,参数列表。适用于子类继承父类以后,原先的方法并不适用于子类当前具有的属性的运行需求。
class animal{
public void show(){
System.out.println("动物");
}
}
class dog extends animal{
public void show(){
System.out.println("哈皮狗");
}
}
两者的主要区别:
- 重载参数列表,返回值可以不同
覆盖参数列表,返回值必须相同
- 重载适用于同一类下的不同方法,是平行关系
覆盖适用于子类和父类,是一种垂直联系