JAVA-继承和多态
2021/7/28 20:09:49
本文主要是介绍JAVA-继承和多态,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.继承
- 继承:面向对象编程支持从已经存在的类中定义新的类.
1.父类和子类
- 若类c1继承自另一个类c2:
c1:子类(继承类,派生类); c2:超类(父类,基类) - 子类从父类中继承可访问的数据域和方法,还可以添加新得数据域和方法.
注意事项:
- 子类并不是父类的一个子集,子类一般比父类包含更多的信息和方法.
- 父类中的私有数据域在该类外是不可访问的,不能在子类中直接使用.但可使用公共的修改/访问器来对其进行操作.
- 不是所有is-a关系都可以用继承建模.(正方形不应该继承矩形,因为其不适于用长,宽属性,其应该继承于Geom...类)
- Java不允许多重继承(几个类派生出一个子类),但可通过接口来实现.
2.extends
-
关键词extends告诉编译器A继承自B类,则A可以用B的数据域以及方法
public class A extends B{}
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-继承和多态的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26大厂数据结构与算法教程:入门级详解
- 2024-12-26大厂算法与数据结构教程:新手入门指南
- 2024-12-26Python编程入门指南
- 2024-12-26数据结构高级教程:新手入门及初级提升指南
- 2024-12-26并查集入门教程:从零开始学会并查集
- 2024-12-26大厂数据结构与算法入门指南
- 2024-12-26大厂算法与数据结构入门教程
- 2024-12-26二叉树入门教程:轻松掌握基础概念与操作
- 2024-12-26初学者指南:轻松掌握链表
- 2024-12-26平衡树入门教程:轻松理解与应用