Java 继承与多态的深入理解

1、  什么是继承,继承的特点?

子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。

特点:在继承关系中,父类更通用、子类更具体。父类具有更一般的特征和行为,而子类除了具有父类的特征和行为,还具有一些自己特殊的特征和行为。

在继承关系中。父类和子类需要满足is-a的关系。子类是父类。

表示父类和子类的术语:父类和子类、超类和子类、基类和派生类,他们表示的是同一个意思。

2、  为什么需要继承?什么时候应该继承?

使用继承可以有效实现代码复用,避免重复代码的出现。

当两个类具有相同的特征(属性)和行为(方法)时,可以将相同的部分抽取出来放到一个类中作为父类,其它两个类继承这个父类。

继承实现了面向对象的原则:write once,only once(编写一次、且编写一次

3、  如何实现继承?

在Java语言中,用extends(扩展)关键字来表示一个类继承了另一个类。

在父类中只定义一些通用的属性和方法。

子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法。或子类重新定义父类的属性、重写父类的方法可以获得与父类不同的功能。

4、  什么是方法重写?

如果在子类中定义的一个方法,其名称、返回类型及参数列表正好与父类中某个方法的名称、返回类型及参数列表相匹配,那么可以说,子类的方法重写了父类的方法。

方法重写在不同类,是实现多态的必要条件。

5、  super关键字的用法和位置,super关键字调用父类的构造方法,super关键字调用父类的方法?

在子类的构造方法中,通过super关键字调用父类的构造方法。

如果子类中重写了父类的方法,可以通过super关键字调用父类的方法。

父类:

private String name;

private String sex;

public xinxin1(String name,String sex)

{

this.name=name;

this.sex=sex;

}

public void hello(){

System.out.println(“嗨!我是”+name+”我是”+sex+”孩”);

}

子类:

public xinxin2(String name,String sex)

{

//调用父类的构造方法

super(name,sex);

}

public void hello(){

System.out.println(“我是新来的!”);

//调用父类的方法

super.hello();

}

位置注意:调用父类的构造方法的语句(super语句)必须是构造方法中的第一条语句。

因为创建对象的时候,需要先创建父类对象,再创建子类对象。

注意:创建对象时,先创建父类对象,在创建子类对象。如果没有显示调用父类的构造方法,将自动调用父类的无参构造方法。

6、  一切类的老大(祖先)Object。

所有类都直接或者间接地继承了java.lang.Object类,Object类中定义了所有的java对象都具有的相同行为,是所有类的祖先。

一个类如果没有使用extends关键字,那么这个类直接继承自Object类。

7、  什么是多态?

多态的特征是表现出多种形态,具有多种实现方式。或者多态是具有表现多种形态的能力的特征。或者同一个实现接口,使用不同的实例而执行不同的操作。

8、  为什么需要使用多态?多态的好处?

可以增强程序的可扩展性及可维护性,使代码更加简洁。

不但能减少编码的工作量,也能大大提高程序的可维护性及可扩展性。

9、  如何实现多态?

一般做法是:写一个方法,它只接收父类作为参数,编写的代码只与父类打交道。调用这个方法时,实例化不同的子类对象(new 一个对象)。

更具体的说:

(1)、子类重写父类的方法。使子类具有不同的方法实现。

(2)、把父类类型作为参数类型,该父类及其子类对象作为参数转入。

(3)、运行时,根据实际创建的对象类型动态决定使用那个方法。

在运行时,java虚拟机会根据实际创建的对象类型决定使用那个方法。一般将这称为动态绑定。

10、多态小结:

多态与继承、方法重写密切相关,我们在方法中接收父类类型作为参数,在方法实现中调用父类类型的各种方法。当把子类作为参数传递给这个方法时,java虚拟机会根据实际创建的对象类型,调用子类中相应的方法(存在方法重写时)。

以上就是使用java继承与多态的讲解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

java多态和继承_Java 继承与多态的深入理解相关推荐

  1. java 父类是抽象类 定义private的属性 子类继承_java继承、多态、接口、抽象类定义及应用...

    继承:关键字extends java 中继承是单继承 允许多个子类继承一个父类,不允许一个子类继承多个父类. 继承是继承父类的所有属性和方法,但并不是所有的属性和方法都可被子类调用: 子类继承父类是必 ...

  2. 简述java什么是继承_Java 继承简述

    继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类.继承可以理解为一个对象从另一个对象获取属性的过程. 如果类A是类B的父类,而类B是类C的父类,我们也称C是A的子类,类C是从类A ...

  3. Java继承_java继承

    代码块 语法:{} 示例: 作用:用来给变量赋值 面向对象的三大特征 封装,继承,多态 继承 我们使用extends关键字去继承 示例: cat类及测试类: 我们在这里称Animal类为父类,超类,基 ...

  4. java多态怎么学_Java学习笔记---多态

    在面向对象的程序设计中,多态是继数据抽象和继承之后的第三种基本特性: 多态通过分离做什么(基类对象)和怎么做(导出类对象),从另一角度将接口和实现分离开来.多态不但能够改善代码的组织结构和可读性,还能 ...

  5. java为什么序列化不一致_java – 为什么Jackson多态序列化在列表中不起作用?

    杰克逊正在做一些真正奇怪的事情,我找不到任何解释.我正在进行多态序列化,当一个对象独立时它可以很好地工作.但是,如果将相同的对象放入列表并对列表进行序列化,则会删除类型信息. 它丢失类型信息的事实将导 ...

  6. java中多态的例子_java中的多态案例

    多态性实际上有两种: 1.方法的多态性: 1.1方法重载:相同的方法名,会根据传入的参数的类型和个数不同执行不同的方法 1.2方法覆写:同一个方法名称,会根据子类的不同实现不同的功能 2.对象的多态性 ...

  7. java中如何实现继承_Java继承

    Java继承 1.什么是继承呢? 类似人类中的继承(继承上一辈.上上辈的东西),在Java中就是将一个已知的类进行拓展,让一个新的类来继承这个已知的类,这样就能使这个新的类具有已知类的属性和行为. 新 ...

  8. java乐器继承_Java 继承——1

    实现如下类之间的继承关系,并编写Music类来测试这些类. package text1; public class Instrument { //输出弹奏乐器 public void play() { ...

  9. java public 继承_java继承问题

    代码: 父类: public class Father { public Father() { System.out.println("基类构造函数{"); show(); new ...

最新文章

  1. matplotlib绘制多个子图
  2. OutOfRangeError closed and has insufficient elements (requested 512, current size 362)
  3. 计算机攻防网站在线对攻,对攻
  4. Linux shell逻辑运算
  5. mysql视图管理和存储过程
  6. python生成序列_python中生成一个指定长度的列表,按1,2,3的序列生成
  7. 天池学习赛:工业蒸汽量预测1——数据探索
  8. Chrome启动后打开第一个网页很慢的解决方案
  9. docker安装tomcat8
  10. mysql中文版 win7_MySQL数据库下载64位下载-MySQL数据库64位【支持win7/win10】8.0.18 官方中文最新版-东坡下载...
  11. Vmware15安装win7专业版以及vmtools
  12. 中兴linux下载软件,最新中兴新支点操作系统v3.2.2 最新版下载地址电脑版-CC软件...
  13. Unity WebGL部署
  14. 王润涵:如何用链脉名片打造朋友圈自明星
  15. Noip2011 Day1 T1 铺地毯(模拟)
  16. 三维建模教程——概念版摩托车
  17. unix linux tecn,对高级 Linux 用户有用的 20 个下令
  18. vue项目 el-input输入框字符限制,只显示英文及数字
  19. utf8与unicode转换
  20. axure中的拐弯箭头_Axure之幼儿养成记---标记元件中页面快照、水平箭头、垂直箭头、便签、圆形和水滴标记...

热门文章

  1. ASP.NET跨页面传值技巧
  2. 企业经营私域运营的三大核心系列直播课
  3. 虚拟机中安装GHO文件配置说明
  4. Redis 字符串(String)
  5. (转)Unity3d UnityEditor编辑器定制和开发插件
  6. 源代码编译MYSQL5.6 环境下的MHA+KEEPALIVED的安装和维护
  7. android面试题总结加强版
  8. 开放平台_OAuth2.0
  9. 华为NIP网络***检测系统
  10. rog live service是什么_王者荣耀日活跃用户破亿!ROG游戏手机助力水友赛进入4强争夺...