本文主要是介绍JAVA-继承和多态,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.继承
- 继承:面向对象编程支持从已经存在的类中定义新的类.
1.父类和子类
- 若类c1继承自另一个类c2:
c1:子类(继承类,派生类); c2:超类(父类,基类)
- 子类从父类中继承可访问的数据域和方法,还可以添加新得数据域和方法.
注意事项:
- 子类并不是父类的一个子集,子类一般比父类包含更多的信息和方法.
- 父类中的私有数据域在该类外是不可访问的,不能在子类中直接使用.但可使用公共的修改/访问器来对其进行操作.
- 不是所有is-a关系都可以用继承建模.(正方形不应该继承矩形,因为其不适于用长,宽属性,其应该继承于Geom...类)
- Java不允许多重继承(几个类派生出一个子类),但可通过接口来实现.
2.extends
3.super
- 关键字super指代父类,可以用于调用父类中的普通方法和构造方法.
- 调用父类的构造方法: super()/super(arguments);
若要调用父类的构造方法,必须使用super关键字且置于构造方法的第一条语句.
- 构造方法链:任何情况下,构造一个类的实例时将会调用沿着继承链的所有父类的构造方法.
构造一个子类的对象时,子类的构造方法会在完成自己的任务之前,首先调用它的父类的构造方法,...持续到最后一个构造方法被调用为止.
构造方法可以调用重载的构造方法或父类的构造方法.若它们都没有被显式地调用,编译器会自动将super()作为构造方法的第一条语句.
- 若要设计一个可被继承的类,最好提供一个无参构造方法以避免错误(最好为每个类提供一个无参构造方法)
- 调用父类的普通方法: super.方法名(argument);
2.方法重写
- 要重写一个方法,需在子类中使用和父类一样的签名来对该方法进行定义.
注:
- 重写的方法必须与被重写的方法具有一样的签名,一样或兼容的返回类型.
- 仅当实例方法可访问时才可被重写
- 与实例方法一样,静态方法也可被继承,但其不可被重写(父类的静态方法在子类中被重新定义,则父类的静态方法被隐藏,此时可用父类名.静态方法名来调用)
3. 方法重写和重载
- 重载: 使用同样的名字但是不同的签名来定义多个方法.
- 重写: 在子类中提供一个对方法的新的实现.
注:
-
方法重写发生在具有继承关系的不同类中;方法重载可以发生在同一个类中,也可以发生在具有继承关系的不同类中.
-
方法重写具有同样的签名;方法重载具有同样的名字但是不同的参数列表.
为避免错误,可使用重写标注:在子类的方法前放一个@Override.
该标注表示被标注的方法必须重写父类的一个方法.
eg.
public class A extends B{
@Override
public String toString(){
return super.toString() + "wow!";
}
}
这篇关于JAVA-继承和多态的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!