继承
继承的好处:
① 减少了代码的冗余,提高了代码的重复性。
② 便于功能的扩展。
③ 为之后多态性的使用,提供了前提。
继承的格式:
Class A extends B {
// 继承的格式
}
说明
1)A:称为子类、派生类、subclass
2)B:称为父类、超类、基类、superclass
体现:
1)一旦子类A继承了父类B以后,子类A中就获取了父类B中声明的结构:属性、方法。
特别的:
1)父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私有的结构。只因为封装性的影响,使得子类不能直接调用父类的结构而已。
另外:
1)子类继承父类以后,还可以声明自己特有的属性和方法,实现功能的扩展。
子类和父类的关系:
Java中只支持单继承和多层继承
① 一个子类只能有一个直接父类
② 一个父类可以派生出多个子类
正确方式
Class SubDemo extends Demo {
// ok
}
错误方式
Class SubDemo extends Demo1,Demo2... {
// error
}
说明
1)所有的Java类都直接或间接的继承于java.lang.Object类
2)意味着:所有的Java类具有java.lang.Object类声明的功能
方法重写
方法重写:override
重写:子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作。
class Animal {
public void speak() {
System.out.println("sound");
}
}class Dog extends Animal {
@Override // 注解:用于明确表示重写
public void speak() {
System.out.println("wo wo");
}
}
重写的规定
1)子类重写父类的方法名相同。
2)子类重写父类的参数列表相同(参数类型和数量)。
3)子类重写父类的返回值类型相同或是子类型。
4)子类重写父类的访问权限不能比父类中的小。
5)子类不能重写父类中声明为 final
的方法
6)子类不能重写声明为private权限的方法
方法重载:overload
类可以包含多个具有相同名称但参数列表不同的方法
class Calculator {
int add(int a, int b) {
return a + b;
}int add(int a, int b, int c) {
return a + b + c;
}double add(double a, double b) {
return a + b;
}
}
重载的规定
1)方法名相同。
2)参数列表不同(参数的类型、数量或顺序)。
3)可以有不同的返回类型
super关键字
Super理解为:父类的
Super可以用来调用:属性、方法、构造器
Super关键字的使用:
1)super.属性 调用父类中声明的属性
2)super.方法 调用父类中声明的方法
3)super(形参列表) 子类构造器中调用父类中声明的指定的构造器
说明
1)“super(形参列表)”的使用,必须声明在子类构造器的第一行
2)在构造器中,“this(形参列表)” 和 “super(形参列表)”不能同时出现
3)在构造器的首行,没有显示的声明this(形参列表)或super(形参列表),则默认调用的是父类中空参的构造器super()
4)在类的多个构造器中,至少有一个使用了super(形参列表),调用父类的构造器。