java多态和继承_Java 继承与多态的深入理解
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 继承与多态的深入理解相关推荐
- java 父类是抽象类 定义private的属性 子类继承_java继承、多态、接口、抽象类定义及应用...
继承:关键字extends java 中继承是单继承 允许多个子类继承一个父类,不允许一个子类继承多个父类. 继承是继承父类的所有属性和方法,但并不是所有的属性和方法都可被子类调用: 子类继承父类是必 ...
- 简述java什么是继承_Java 继承简述
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类.继承可以理解为一个对象从另一个对象获取属性的过程. 如果类A是类B的父类,而类B是类C的父类,我们也称C是A的子类,类C是从类A ...
- Java继承_java继承
代码块 语法:{} 示例: 作用:用来给变量赋值 面向对象的三大特征 封装,继承,多态 继承 我们使用extends关键字去继承 示例: cat类及测试类: 我们在这里称Animal类为父类,超类,基 ...
- java多态怎么学_Java学习笔记---多态
在面向对象的程序设计中,多态是继数据抽象和继承之后的第三种基本特性: 多态通过分离做什么(基类对象)和怎么做(导出类对象),从另一角度将接口和实现分离开来.多态不但能够改善代码的组织结构和可读性,还能 ...
- java为什么序列化不一致_java – 为什么Jackson多态序列化在列表中不起作用?
杰克逊正在做一些真正奇怪的事情,我找不到任何解释.我正在进行多态序列化,当一个对象独立时它可以很好地工作.但是,如果将相同的对象放入列表并对列表进行序列化,则会删除类型信息. 它丢失类型信息的事实将导 ...
- java中多态的例子_java中的多态案例
多态性实际上有两种: 1.方法的多态性: 1.1方法重载:相同的方法名,会根据传入的参数的类型和个数不同执行不同的方法 1.2方法覆写:同一个方法名称,会根据子类的不同实现不同的功能 2.对象的多态性 ...
- java中如何实现继承_Java继承
Java继承 1.什么是继承呢? 类似人类中的继承(继承上一辈.上上辈的东西),在Java中就是将一个已知的类进行拓展,让一个新的类来继承这个已知的类,这样就能使这个新的类具有已知类的属性和行为. 新 ...
- java乐器继承_Java 继承——1
实现如下类之间的继承关系,并编写Music类来测试这些类. package text1; public class Instrument { //输出弹奏乐器 public void play() { ...
- java public 继承_java继承问题
代码: 父类: public class Father { public Father() { System.out.println("基类构造函数{"); show(); new ...
最新文章
- matplotlib绘制多个子图
- OutOfRangeError closed and has insufficient elements (requested 512, current size 362)
- 计算机攻防网站在线对攻,对攻
- Linux shell逻辑运算
- mysql视图管理和存储过程
- python生成序列_python中生成一个指定长度的列表,按1,2,3的序列生成
- 天池学习赛:工业蒸汽量预测1——数据探索
- Chrome启动后打开第一个网页很慢的解决方案
- docker安装tomcat8
- mysql中文版 win7_MySQL数据库下载64位下载-MySQL数据库64位【支持win7/win10】8.0.18 官方中文最新版-东坡下载...
- Vmware15安装win7专业版以及vmtools
- 中兴linux下载软件,最新中兴新支点操作系统v3.2.2 最新版下载地址电脑版-CC软件...
- Unity WebGL部署
- 王润涵:如何用链脉名片打造朋友圈自明星
- Noip2011 Day1 T1 铺地毯(模拟)
- 三维建模教程——概念版摩托车
- unix linux tecn,对高级 Linux 用户有用的 20 个下令
- vue项目 el-input输入框字符限制,只显示英文及数字
- utf8与unicode转换
- axure中的拐弯箭头_Axure之幼儿养成记---标记元件中页面快照、水平箭头、垂直箭头、便签、圆形和水滴标记...
热门文章
- ASP.NET跨页面传值技巧
- 企业经营私域运营的三大核心系列直播课
- 虚拟机中安装GHO文件配置说明
- Redis 字符串(String)
- (转)Unity3d UnityEditor编辑器定制和开发插件
- 源代码编译MYSQL5.6 环境下的MHA+KEEPALIVED的安装和维护
- android面试题总结加强版
- 开放平台_OAuth2.0
- 华为NIP网络***检测系统
- rog live service是什么_王者荣耀日活跃用户破亿!ROG游戏手机助力水友赛进入4强争夺...