初学Java语言之多态初体验

首先我们有这样几个类,电脑,个人电脑,笔记本电脑。

class Computer{

  public void turnOn(){
  }
}

现在有了电脑这个类,那么个人PC,笔记本都是继承他。

class PC extends Computer{
  public void turnOn(){
    System.out.println("PC has turn on");
  }
}

class NB extends Computer{
  public void turnOn(){
    System.out.println("NB has turn on");
  }
}

我们看到,每个类都有一个 turnOn()方法,而在父类中这个方法是空的,子类中各自有不同的实现,到这里可能还不太明显。如果有另外一个方法,要接受这些类作为参数,就像这样

class Test{
  public void go(Computer computer){
     computer.turnOn();
  }
}

这个方法接收的是基类参数,当然我们是可以把子类传递给方法的,也应该这么做

go(new PC());
go(new NB());

这样他就会去调用具体子类的turnOn()方法,所以这两次调用的输出是不一样的.如果不用基类作为参数,我们想调用每个子类的turnOn()方法,那么就要些两个方法体一样的go()而接收不同的参数的重载。

public void go(PC computer){
     computer.turnOn();
  }

public void go(NB computer){
     computer.turnOn();
  }

这样些也是正确的,但是这样会产生很多重复代码,而且也不易维护,当然这只是多态中最基本的一个部分,Java多态机制还有很多特性,关于这些建议大家看看 java编程思想(think in java)这本书,里面讲的很详细,这里只是很简单的描述了一下,还望个各位高手不要见笑。

时间: 2024-08-03 17:42:53

初学Java语言之多态初体验的相关文章

Java多态初体验

Java多态初体验本文面向Java初学者,我们在教材上经常会看到Java是多态的,可是一般的教科书只停留在理论上,很少有实际操作.现在把多态个概念用代码简单描述一下,由于本人水平有限,所以难免有不足之处.      首先我们有这样几个类,电脑,个人电脑,笔记本电脑. java 代码 class Computer{                  public void turnOn(){         }     }    现在有了电脑这个类,那么个人PC,笔记本都是继承他. java 代码

JAVA 8:Lambdas表达式初体验

原文链接,译文链接,译者:郑旭东 Lambdas项目是即将发布(译者注:原作者写本文的时候JAVA8尚未发布)的JAVA8中重要主题,同时它应该也是众多JAVA开发者最期待的功能.还有一个非常有意思的功能同Lambda表达式一起被加入到了JAVA中,它就是Defender方法.在这篇博文中,我想去探究一些更深层次的东西--JAVA如何在运行期表达Lambda表达式的和那些字节码指令在方法调度时被调用. 虽然JAVA8尚未发布,但你仍然可以通过"下载未正式发布版本"来体验JAVA8的魅力

zephir-(2)安装和初体验

zephir-安装和初体验 前言 先在这里感谢各位zephir开源技术提供者 zephir主要是解决了PHP开发人员尝试编写和编译PHP拓展所能执行的代码的语言.这是一个支持动态/静态类型的语言,熟悉PHP开发人员可以很好的进行开发.zephir这个名字的主要来源是(Zend Engine/PHP/Intermediate),今天首先介绍zephir的安装,接着会对zephir进行一些语法上面的介绍,希望大家喜欢! 注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术 附上: 喵了个

Java基础:初学者Java语言入门精典文章

初学 Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案.在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供初学者做个参考. 我在学习Java的过程中主要围绕以下几个方面来学习: 1.时刻提醒自己Java是一种OOP语言工具,而不仅仅是编码,只有这样才能总体把握和运用Java. 2.在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以.要注意,即便对一个简单的例子也要有耐心去琢磨.调试.改动. 3.在学习的

初学Java所需要注意的几点

初学 Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案.在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供初学者做个参考. 我在学习Java的过程中主要围绕以下几个方面来学习: 1.时刻提醒自己Java是一种OOP语言工具,而不仅仅是编码,只有这样才能总体把握和运用Java. 2.在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以.要注意,即便对一个简单的例子也要有耐心去琢磨.调试.改动. 3.在学习的

Java语言入门教程(十三):Java语言中继承中的构造方法问题

教程(十一)中,了解了Java语言中继承的基本概念.Java中类与类的继承 ,是单继承,主要目的是复用.子类对象可以复用父类中权限允许的属性和方法 ,所以子类的构造方法和父类的构造方法之间,有一定的调用关系,本文中将进 行详细介绍. 首先,需要记住一个事实:子类的任何一个构造方法,都将先调用父类某个 构造方法.如子类Trainer中的构造方法: public Trainer() { } 虽然这个构造方法的方法体中什么代码也没有写,但是也调用了父类 Employee的构造方法,默认调用的是Empl

Kotlin 初体验:主要特征与应用

Kotlin 是一种针对 Java 平台的新编程语言.它简洁.安全.务实,并且专注于与 Java 代码的互操作性.它几乎可以用在现在Java 使用的任何地方 :服务器端开发.Android 应用,等等.本文我们将详细地探讨 Kotlin 的主要特征. 本文选自<Kotlin实战>. Kotlin初体验 让我们从一个小例子开始,来看看 Kotlin 代码长什么样子.这个例子定义了一个 Person 类来表示"人",创建一个"人"的集合,查找其中年纪最大的人

屌丝就爱尝鲜头——java8初体验

Java8已经推出,让我们看看他的魅力.让我们看看他改变较大的部分. 一.java8概述 Java8是由Oracle(甲骨文)公司与2014年3月27日正式推出的.Java8同时推出有3套语言系统,分别是Java SE8.Java SE Emebbled 8.Java ME8. Java SE8较以往的系统增强的功能有: ①增强了对集合式操作语言--lambda表达式的支持,"Lambda 表达式"(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演

初学javaweb-有什么对初学java web的初学者有帮助的书籍吗?

问题描述 有什么对初学java web的初学者有帮助的书籍吗? 我是一名学生 ,现在正在学习java web的 tomcat 是名初学者我想打好基础,才刚刚学会在jsp中使用java语言但是有很多东西自己还是不懂,感觉很吃力所以想询问下有什么好的书籍适合我这种基础不是很好的人,谢谢! 解决方案 java web开发实战经典 作者:李兴华 书附带有视频教程,很好的资料 解决方案二: 我也是学生,有一本清华大学出版社的挺厚的一本书忘记叫什么了,初学特别合适上面图比较多,是入门很好的 解决方案三: <