`
scorpiomiracle
  • 浏览: 263416 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java的单继承机制

阅读更多
总结来说就是:
一个类,只能继承一个父类。
一个类,可以有任意个子类。

以下为摘记:
1.Java牛角尖【011】: Java中只支持单继承吗?
——http://blog.csdn.net/sunshinestation/archive/2009/06/23/4290451.aspx
又是一个牛角尖,只是语言不够严谨而已,Java中只支持类的单继承,接口之间的继承同样也是使用extends关键字,但是接口之间是支持多继承的,如下面的例子:

interface IP1 {  
}  
 
interface IP2 {  
}  
  
public interface ISub extends IP1, IP2 {  
  
} 


  很明显,上面的代码是没有问题的。所以标题中的应该是不严谨的,严格的说应该是Java中类的继承只支持单继承。

  当然,这样我们自然会想到多继承的问题,如果两个父接口中有同样的方法,那么子接口中怎么办呢?

interface IP1 {  
    public void test();  
}  
  
interface IP2 {  
    public void test();  
}  
  
public interface ISub extends IP1, IP2 {  
  
}
 

  其实这个问题不用担心,因为接口只是对方法的一个声明,并没有具体的实现,所以子接口中的方法属于哪个父接口并不重要,重要的是当实现这个接口的时候只需有一个该方法的实现就可以了,这个方法的实现应该同时属于两个父接口。

  很明显,这不是真正的问题,真正的问题是如果在两个父接口中分别定义了名称和参数都相同,而返回结果却不同的方法:

interface IP1 {  
    public void test();  
}  
  
interface IP2 {  
    public String test();  
}  
  
public interface ISub extends IP1, IP2 {  
  
} 


  这同已经有问题了,这时会有编译时错误,原因很简单,方法的重载只能是相同的方法名,不同的输入参数;而对于这两个方法,它们具有相同的方法名,相同的输入参数,只是不同的返回参数,是不能作为重载方法的,所以对于编译器来说,这里是一个方法的重复定义,明显是不能通过编译的。

  同样,这样的问题也存在于一个类同时实现多个接口的情况,所以,在这些情况下,我们必须注意一点,就是具有相同方法名,相同输入参数的方法,是不能出现在同一个类或接口中的。

2.http://www.jdon.com/jivejdon/thread/29451
  sunxuezhen:为什么Java要使用单继承,而不多继承或双继承?
  banq:降低复杂性是一个方面,实际上,在我们使用继承时,总是有一个主要方面,其他是次要方面,这样分清主次后,实现主要方面继承。

  如果是多继承,使用者会根本不考虑实际场景情况,胡乱继承,反而违背OO精神,AOP就是解决其他次要方面的继承问题,AOP通过拦截和导引其他属性进入当前对象。

  使用单继承,会让我们更加珍惜父类,不要随便使用继承,因为一个类继承了另外一个类,这个就可能丧失继承其他类的权力,如果随着业务变化,当前类找到了它真正的主类(通常是业务主类),这时系统就变得尴尬了,无法拓展了。

  Java特点就是融合了一定设计场景进入语言,总是需要在一定前提下使用Java的一些语言特点,这也是Java很多特点是双刃剑的原因,剑走偏锋往往是高手所为,所以,用java做OO相当于拿到一把很有灵性的剑,剩余在于使剑的人,他是否有一定武功基础,他是否有灵性,他是否知道模式。

  C#两者都支持,这和.NET一贯路线一样,就会让差的好的都能用他,那想达到随心所欲地步就差了一点。
分享到:
评论

相关推荐

    利用Java继承机制

    Java继承机制在图形类中的应用 Java继承机制是一种重要的面向对象编程技术,通过继承机制,可以实现代码的重用和简化程序设计。在本例中,我们将使用Java继承机制编写一个抽象的图形类Shape,并编写两个子类矩形类...

    Java的继承机制详解

    Java的继承机制是面向对象编程中的核心特性,它允许一个类(子类)从另一个类(父类)继承属性和方法,从而实现代码的复用和扩展。在Java中,继承具有以下特点: 1. 单继承:不同于C++等语言,Java仅支持单继承,即...

    Java 实现继承实例代码

    在Java编程语言中,继承是面向对象特性之一,它允许我们创建一个类(子类或派生类)作为现有类(父类...通过学习这个实例,开发者能够更好地理解和运用Java的继承机制,从而在实际项目中实现更灵活、可扩展的代码结构。

    面向对象抽象思维与java继承机制

    ### 面向对象抽象思维与Java继承机制 #### 一、抽象的含义 在面向对象编程中,**抽象**是一种关键概念,它涉及到从具体的实体中提取共同特征和行为的过程。通过抽象,程序员能够专注于对象的核心特征和功能,而...

    java中继承与多态的题目

    本资源摘要信息是关于 Java 中继承和多态的题目,涵盖了面向对象编程的基本概念和继承机制的应用。 继承的概念 继承是面向对象编程的一种机制,允许一个类(子类)继承另一个类(父类)的属性和方法。继承的目的是...

    Java的继承机制PPT教案学习.pptx

    方法覆盖(Override)是Java继承机制中的一个重要特点,允许子类重新定义或实现父类中的方法。为了有效覆盖,子类的方法必须与父类的方法具有相同的名称和参数列表,同时返回类型也必须一致。如果希望防止子类覆盖...

    Java中继承的特点、好处

    Java中继承的特点、好处

    Java面向对象之继承练习题.doc

    【Java面向对象之继承练习...通过上述练习,可以深入理解Java中的继承机制,如何定义类和方法,以及如何通过继承扩展功能。同时,练习涵盖了构造方法、属性和方法的重写、多态以及类之间的关系等核心面向对象编程概念。

    论JAVA继承机制中父类与子类的关系

    ### 论JAVA继承机制中父类与子类的关系 #### 摘要 本文深入探讨了Java语言中的继承机制,并重点分析了父类与子类之间的关系。文章围绕子类继承父类成员的过程、成员变量及方法的赋值、重写、覆盖等问题展开讨论,...

    Java 接口与继承

    2. 尽管Java在类继承上是单继承的,但可以通过实现多个接口来实现多重继承的效果,接口是Java中另一种形式的继承,它允许一个类实现多个接口。 3. 子类继承了父类的所有非私有成员变量和方法,但不包括构造函数。...

    Java父类继承代码示例

    在Java中,类只允许单继承,即一个类只能直接继承一个父类。但是,Java支持多层继承,即一个子类可以继承另一个子类,从而形成类的继承树。例如: ```java public class Mammal extends Animal { // 特有的属性和...

    java继承类实例

    在这个特定的程序中,我们看到了一个关于Java继承的实例,它演示了子类对象初始化时涉及的各个步骤,包括构造方法、初始化值、父类构造方法以及父类的初始化值。 首先,我们有一个名为`Parent`的父类,它有两个实例...

    java继承例题

    Java继承机制详解 Java继承是面向对象编程(OOP)的一种机制,允许一个类继承另一个类的成员变量和成员方法。通过继承,可以实现代码的重用和扩展。 在Java中,继承是通过使用关键字`extends`来实现的。例如,`...

    经典java继承例子

    在这个经典的Java继承例子中,我们将深入理解这一机制。 首先,我们要明确的是,继承的主要目的是减少代码冗余,提高代码的可维护性和可扩展性。在Java中,我们使用`extends`关键字来表示一个类继承自另一个类。...

    Java中的类继承机制 接口

    Java实验报告三,声明一个shape接口,计算圆,矩形,三角形的面积和周长。

    Java 2实用教程第5版源码及实验

    通过使用接口,我们可以实现多继承,这是Java单继承机制下的扩展。"Java 2实用教程第5版_第6章_接口与实现.ppt"可能包含了关于接口如何声明、如何实现以及如何使用接口作为参数和返回类型的详细讲解,包括`interface...

    java基础继承封装多态

    继承是 Java 中的一种机制,允许一个类继承另一个类的属性和方法。继承的语法是使用 `extends` 关键字,例如 `public class Child extends Parent`。在 Java 中,只支持单一继承,也就是说一个类只能有一个直接父类...

    JAVA事件处理机制

    Java事件处理机制是Java编程中一个关键的概念,它主要用于用户界面(UI)应用程序,使得程序能够响应用户的操作,如点击按钮、选择菜单项等。在Java中,事件处理主要涉及三个核心组件:事件源(Event Source)、事件...

    java关于继承的思维导图(Xmind)

    在这个"java关于继承的思维导图(Xmind)"中,我们可以看到作者对Java继承机制的详细梳理。 1. **类的层次结构** - 在Java中,类可以看作是对象的模板,通过继承,子类可以共享父类的特性。这构建了一个类的层次结构...

Global site tag (gtag.js) - Google Analytics