这一节我们来看java中的单继承和多重继承。

在java语言中,支持的是单继承,不直接支持多继承,可是对C++中的多继承进行了改良。

那么什么是单继承和多继承呢?

单继承:一个子类仅仅能有一个直接父类。

多继承:一个子类能够有多个直接父类。

这个在java中是不同意的。

为什么不同意呢?我们看一个样例:

class A
{
void method()
{
System.out.println("a");
}
}
class B
{
void method()
{
System.out.println("b");
}
}
class C extends A,B
{
}

对于上面的情况。假设当我们调用C对象的method方法时,就会出现不确定性错误了。java也是以这个问题进行改良,从而不直接支持多继承。

所以我们能够看到,java中不直接支持多继承的原因就是:当多个类中有同样成员时会产生调用的不确定性。

java语言中还支持多重继承。

比方以下的样例就是一个多重继承:

class A
{
}
class B extends A
{
}
class C extends B
{
}

这就是多重继承的形式,对于上面的继承,就出现了继承体系。而在这个继承体系中,A是最顶层类,C是对子类。

通过上面的继承体系我们不难看出。A实现的是最基本最基础的功能。

那么我们在实际开发中应该怎样使用这个继承体系呢?

第一步:查看该体系中的顶层类(这里是A),了解该体系的基本功能。

第二步:创建体系中的最子类对象(这里是C),完毕功能的使用。

通过上面的两步。我们就能够按需使用一个继承体系了。

这两节我们一直在说继承。在9.1中我们也说到继承能够提高代码的复用性,可是我们一定要注意:千万不要为了提高代码复用性去定义继承

这是为什么呢?我们看以下样例:

class A
{
void method1(){}
void method2(){}
}
class B
{
void method1(){}
void method3(){}
}

我们发现两个类中都有method1方法。那么我们为了提高复用性而去继承:

class A
{
void method1(){}
void method2(){}
}
class B extends A
{
void method3(){}
}

B类中确实有了method1方法,能够也同一时候继承了method2方法,但method2方法事实上并非B中的方法。这就出现了问题。

这就让我们必须明白什么时候定义继承:当类与类之间存着所属关系时。就定义继承

那么什么是所属关系呢?比方X是Y中的一种,就是说X属于Y。就是一种所属关系。

我们这样表示所属关系:is a 关系。就是所属关系。

所以当我们发现两个类是一种is a 关系时,我们就能够定义继承。


最新文章

  1. jQuery解决iframe高度自适应代码
  2. Squid代理之透明代理
  3. Android设置透明、半透明等效果
  4. django - django 承接nginx请求
  5. [CODEVS1295]N皇后(位运算+搜索)
  6. 快速搭建PHP开发环境(PhpStorm+EasyPHP)
  7. 'EntityValidationErrors' property for more details
  8. uptime
  9. [C#]WinForm 中 comboBox控件之数据绑定
  10. CF643D Bearish Fanpages
  11. 【Java】详解菜单组件
  12. sqoop数据导入命令 (sql---hdfs)
  13. 求助关于jquery easyUI中的treegrid组件,请各位帮忙给个思路,谢谢啦
  14. 浅谈java中源码常见的几个关键字(native,strictfp,transient,volatile)
  15. 解决MySQL因不能创建 PID 导致无法启动的方法
  16. ISP模块之RAW DATA去噪(二)--BM3D算法
  17. Flask11 Session、CSRF、注销session、利用端点自动跳转
  18. python_43_移动文件指针补充
  19. [Angular] Expose Angular Component Logic Using State Reducers
  20. Eclipse-Java代码规范和质量检查插件-SonarLint

热门文章

  1. 摄像头调用代码 笔记本的话,本身有一个摄像头,由于用的usb摄像头,需要把笔记本的摄像头禁用后,再使用
  2. 请简述HTML和XHTML最重要的4点不同?
  3. GCC、g++编译器和gcc编译器的区别
  4. 888. Fair Candy Swap@python
  5. cf上分的失落->高兴->更失落
  6. 使用Eclipse中的反编译插件jadClipse查看Class源码
  7. python抓取知识星球精选帖,制作为pdf文件
  8. Android开发——Accessibility机制实现模拟点击(微信自动抢红包实现)
  9. js总结(三):面向对象,prototype ,oo模拟
  10. Tomcat 7.0.3x 启动慢并且遇到StackOverflowError的异常的解决办法