Java:继承的目的及缺陷

简介: 在java中继承好像占用很重要的位置,很多地方多次强调,但这并不意味着必须使用它。我们要慎用这门技术。那么到底什么时候使用继承?一个最清晰的判断方法就是问问自己是否需要从子类向父类进行向上转型,如果必须向上转型,则继承是必须的。

在java中继承好像占用很重要的位置,很多地方多次强调,但这并不意味着必须使用它。我们要慎用这门技术。

那么到底什么时候使用继承?一个最清晰的判断方法就是问问自己是否需要从子类向父类进行向上转型,如果必须向上转型,则继承是必须的。

继承的缺陷

image.png
image.png

导出类(子类)中接口拓展的部分不能被基类(父类)访问,因此一旦我们向上转型,就不能调用导出类的拓展方法了(接口)

class Useful {
public void f() {}
public void g() {}
}
class MoreUseful extends Useful {
public void f() {}
public void g() {}
public void u() {}
public void v() {}
public void w() {}
}
public class RTTI {
public static void main(String[] args) {
Useful[] x = {
new Useful(),
new MoreUseful()
};
x[0].f();
x[1].g();
// **编译异常: 在 Useful方法不能被找到。**
**//! x[1].u();**
((MoreUseful)x[1]).u(); // **向下转型/RTTI**
((MoreUseful)x[0]).u(); // **抛出异常**
}
} ///:~

Exception in thread "main" java.lang.ClassCastException: pdmtest.cl.Useful cannot be cast to pdmtest.cl.MoreUseful
    at pdmtest.cl.RTTI.main(RTTI.java:36)
目录
相关文章
|
12天前
|
Java 测试技术 应用服务中间件
常见 Java 代码缺陷及规避方式(下)
常见 Java 代码缺陷及规避方式(下)
38 0
|
12天前
|
Java
Java中的继承和多态是什么?请举例说明。
Java中,继承让子类继承父类属性和方法,如`class Child extends Parent`,子类可重写父类方法。多态允许父类引用指向子类对象,如`Animal a = new Dog()`,调用`a.makeSound()`会根据实际对象类型动态绑定相应实现,增强了代码灵活性和可扩展性。
10 0
|
19天前
|
搜索推荐 Java
Java的面向对象特性主要包括封装、继承和多态
【4月更文挑战第5天】Java的面向对象特性主要包括封装、继承和多态
15 3
|
1月前
|
Java 程序员 编译器
Java继承与多态知识点详解
本文主要讲解的是Java中继承与多态的知识点
|
1月前
|
Java C++ iOS开发
java为何不支持多继承
java为何不支持多继承
25 0
|
1月前
|
Java 程序员 编译器
Java继承详解
Java继承详解
|
1月前
|
Java 程序员 编译器
【详识JAVA语言】面向对象程序三大特性之二:继承
【详识JAVA语言】面向对象程序三大特性之二:继承
47 2
|
12天前
|
监控 安全 Java
常见 Java 代码缺陷及规避方式(中)
常见 Java 代码缺陷及规避方式(中)
25 1
|
1月前
|
Java
java中的继承
java中的继承
10 1
|
1月前
|
Java
Java类的继承
Java类的继承
7 0