Java教程

JAVA-继承和多态

本文主要是介绍JAVA-继承和多态,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.继承

  • 继承:面向对象编程支持从已经存在的类中定义新的类.

1.父类和子类

  1. 若类c1继承自另一个类c2:
    c1:子类(继承类,派生类); c2:超类(父类,基类)
  2. 子类从父类中继承可访问的数据域和方法,还可以添加新得数据域和方法.

注意事项:

  1. 子类并不是父类的一个子集,子类一般比父类包含更多的信息和方法.
  2. 父类中的私有数据域在该类外是不可访问的,不能在子类中直接使用.但可使用公共的修改/访问器来对其进行操作.
  3. 不是所有is-a关系都可以用继承建模.(正方形不应该继承矩形,因为其不适于用长,宽属性,其应该继承于Geom...类)
  4. Java不允许多重继承(几个类派生出一个子类),但可通过接口来实现.

2.extends

  • 关键词extends告诉编译器A继承自B类,则A可以用B的数据域以及方法

    public class A extends B{}

3.super

  • 关键字super指代父类,可以用于调用父类中的普通方法和构造方法.
  1. 调用父类的构造方法: super()/super(arguments);
    若要调用父类的构造方法,必须使用super关键字且置于构造方法的第一条语句.
  2. 构造方法链:任何情况下,构造一个类的实例时将会调用沿着继承链的所有父类的构造方法.
    构造一个子类的对象时,子类的构造方法会在完成自己的任务之前,首先调用它的父类的构造方法,...持续到最后一个构造方法被调用为止.
    构造方法可以调用重载的构造方法或父类的构造方法.若它们都没有被显式地调用,编译器会自动将super()作为构造方法的第一条语句.
  3. 若要设计一个可被继承的类,最好提供一个无参构造方法以避免错误(最好为每个类提供一个无参构造方法)
  4. 调用父类的普通方法: super.方法名(argument);

2.方法重写

  • 要重写一个方法,需在子类中使用和父类一样的签名来对该方法进行定义.

注:

  1. 重写的方法必须与被重写的方法具有一样的签名,一样或兼容的返回类型.
  2. 仅当实例方法可访问时才可被重写
  3. 与实例方法一样,静态方法也可被继承,但其不可被重写(父类的静态方法在子类中被重新定义,则父类的静态方法被隐藏,此时可用父类名.静态方法名来调用)

3. 方法重写和重载

  • 重载: 使用同样的名字但是不同的签名来定义多个方法.
  • 重写: 在子类中提供一个对方法的新的实现.

注:

  1. 方法重写发生在具有继承关系的不同类中;方法重载可以发生在同一个类中,也可以发生在具有继承关系的不同类中.

  2. 方法重写具有同样的签名;方法重载具有同样的名字但是不同的参数列表.
    为避免错误,可使用重写标注:在子类的方法前放一个@Override.
    该标注表示被标注的方法必须重写父类的一个方法.
    eg.

    public class A extends B{
    @Override
    public String toString(){
    return super.toString() + "wow!";
    }
    }

这篇关于JAVA-继承和多态的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!