JavaOO 多态和抽象

多态:相同的行为,不同的实现(重写、重载)

多态:

1、静态多态:编译时,系统就能确定调用的是哪个方法---使用重载实现

2、动态多态:运行中系统才能动态确定方法所指的对象---使用动态绑定和重写实现

动态多态的技术基础:

引用数据类型转换的前提:不是任意引用数据类型都可以进行转换(没办法“指鹿为马”),只有有继

承关系的类才能转换。

1、向上转型技术---自动转换类型---把小类型的对象放到大类型的引用中---没有任何风险,绝对成功

---子类对象中由于包含了一个完整的父类对象部分,所以父类引用可以指向子类对象

---对于同一个子类对象,用父类引用指向只能看到它身上来自于父类的方法,换成子

类引用指向的时候可以看到所有的方法(都要受访问修饰符限制)

在Java中除了本类的引用指向本类的对象是绝对正确且没有特殊操作以外,父类的引用指向子类对

象也是绝对正确

Object的引用可以指向所有类型的独享,它是所有类的根类

2、向下转型技术---强制转换类型---把大类型指向的对象放到小类型的引用中---有风险,风险是编译

通过,可能运行报异常

由于父类引用现在不仅仅能够指向父类对象,也可以指向各种子类对象;所以父类引用的变化性增大。当我们把它赋给一个子类引用时,必须强制告知这就是该子类的对象,才能编译通过。但是运行起来后,如果该父类引用指的不是该子类对象,还是会运行失败,报异常。只有该父类引用确实指向该子类对象,才会运行也成功。

当父类引用指向子类对象时,只能看到来自父类的属性和行为

当调用重写方法时,一定得到的是子类重写后的效果,因为对象时子类对象

instanceof关键字:在强转之前做判断,规避掉强转之后的运行异常

instanceof是一个运算符

抽象:

当一个方法只有方法的申明,没有方法的实现,这样的方法就是抽象方法

抽象方法用abstract关键字修饰

当一个类具备一个抽象方法,这个类就不能够再被new 对象了,这个类就叫抽象类,需要用关键字abstract修饰。

特点:

1、抽象类不能产生对象---1)在做类的继承设计时,当父类抽取到一定程度,就没有产生对象的必要

了,因为所有有意义的对象,一定是属于某个子类类型的

2)如果一个类有抽象方法,那么这个类就一定是抽象类。因为具体实际存

在的对象不可能有抽象的内容。

3)语法上:抽象类可以没有抽象方法,只要在类声明的地方加了abstract;

有抽象方法的类,一定是抽象类

2、抽象类的作用:专门用来设计为父类的---子类必须重写来自于抽象类的抽象方法,从而达到了子类

的实现必须遵循设计人员的一支

---如果子类不重写抽象方法,那么该子类也只能是抽象类

3、抽象类也是类,所以能够再其中书写属性、构造、方法

时间: 2024-09-30 10:12:14

JavaOO 多态和抽象的相关文章

多态与抽象以及接口

继承.封装.多态.抽象是面向对象编程的四大基本特征.封装隐藏了类的内部实现机制,在不影响用户使用的前提下,改变类的内部结构,从而保护了数据.继承则是通过重写父类代码,既可以多态,也可以让代码的复用性大大提高.所谓多态,就是同一种行为,不同的对象不同的体现,java的多态弥补了其自身单一继承的缺陷. 多态又分为,静态多态和动态多态. 静态多态是指程序在编译时就能决定其调用的方法,也称编译时多态,说的更直接静态多态实现方式就是方法的重载. 多态多态是指程序在运行中系统多态确定方法所指的对象,也称为运

java学习笔记(八)多态与抽象

多态和抽象是从继承引出来的两个重要的概念,多态允许对象以多种形式存在,而抽象则允许创建抽象类. 多态是指一个对象有多种形式的能力.一个类的子类可以定义它们唯一的行为,同时共享父类的某些相同特征.动态多态指在运行中系统才能动态确定方法所指的对象. 多态的技术基础: 向上转型技术:一个父类的引用变量可以指向不同的子类对象,或者说一个子对象可以被当做一个父类类型; instanceof关键字:用于判断运行时对象的真正类型; 动态绑定技术:运行时根据父类引用变量所指对象的实际类型执行相应的子类方法,从而

继承、类的高级概念、多态和抽象、接口

private 只能在自己的类中访问得到. public 表 示共有的,在任何类中调到. protected 在所有类中 defult 在自己以及类中调用到. 本类 同一包中不同类 不同包 子类 piviate 是 是 是 是 public 是 是 是 protected 是 是 default 是 extends继承类 super . 类名(): 操类 子类中调用副类方法 public class salary extends Employee{ } 使用“is a ”判断继承是否正确 所有类

JAVA——多态和抽象

多态和抽象从继承引出来的两个重要的概念,多态允许以多种形式存在,而抽象则允许创建抽象类. 在Java中,多态有两种理解方式:第一种是对象的不同的方法可以用相同的一个方法名,也就是重载的概念.另一种是同一对象根据不同的消息执行相应的行为,也可以这样认为发送消息给某一对象,让对象自行选择哪种相应的行为.根据这两种方式,所以多态分为静态多态和动态多态: ■静态多态指的是程序在编译时,系统就能决定调用哪个方法,所以也称为编译时多态.在Java中,静态多态实现的方法就是方法重载,其调用规则是依据对象在定义

day14 多态与抽象

多态:相同的行为,不同的实现. 多态分为:静态多态和动态多态. 静态多态:在编译期即确定方法的实现和效果.--使用重载实现 动态多态:运行后才能确定方法的实现和执行效果.--使用动态绑定和重写实现 动态绑定技术:引用数据类型转换.instanceof关键字 引用数据类型转换:向上转型:父类的引用指向子类的对象. 向下转型:运行起来后,确实是本类引用指向本类对象或者指向子类对象,才能成功. instanceof关键字:用于判断运行时对象的真正类型,判断对象是否是某个类的实例.返回true/fals

java面向对象编程--第九章 多态和抽象

9.1多态 在生物学中,是指一个生物或物种可以有多种不同的形式或阶段: 在OOP中,多态是指一个对象有多种形式的能力. 多态可以说是面向对象编程的精髓所在.java中之所以引入多态的概念,原因之一是它在类的继承问题上和C++不同.单继承保证了继承关系的简单明了,但势必在功能上有很大的限制. 由于子类对象中包含一个完整的父类对象,所以父类变量中定义的方法和属性在子类对象中都能找到,所以允许一个父类变量引用子类对象,但反过来却不行,因为子类的方法和属性可能多于父类. 多态调用时,用父类变量指向子类对

类、多态、抽象、接口小结

什么是类 类是具有相同的属性和方法的一堆对象的集合. 什么是对象 万物皆对象,日常生活中能看到和摸到的东西都是对象. 对象由属性和行为组成 属性是对象所具有的特征,行为是对象可以做的动作 类和对象的关系 类是对象的描述,对象是类的实例 对象的每个属性被表示为类中的一个成员变量 对象的每个行为成为类中的一个方法 什么是构造函数 构造函数是类中的一个特殊方法,该方法在对象实例化时被调用.构造函数的用途是当对象实例化时,初始化对象中的成员变量. final关键字 1.final 可修饰变量(创建符号常

多态和抽象

引用数据类型:只有有继承关系的,才有可能做类型转换,其它的没有可能多态的分类一.静态多态 指的是编译时,系统就能决定调用哪个方法二.动态多态 指的是运行中系统才能动态确定方法所指的对象多态的技术基础: 1.向上转型:一个父类的引用变量可以指向不同的子类对象 2.向下转型:把父类的值赋给子类的变量,有风险,不一定成功抽象类的特点 1.抽象类不能产生对象 2.抽象类存在的意义就在于产生子类 3.抽象方法里面可以定义属性.方法.构造.初始化块,普通类有的它的有 4.语法上允许一个抽象类里面没有抽象方法

面向对象(封装、继承、多态、抽象)

封装--封装主要是基于类的属性,本类中的属性私有化,即有private修饰词来加以修饰,生成GET,SET方法来给外界调用. 继承--java继承是面向对象的最显著的一个特征.继承是从已有的来中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力. 多态--java的多态是指对非静态方法的多态,父类的引用来调用子类的方法. 抽象--使用关键词abstrace声明的类叫做"抽象类".如果一个类里包含了一个或多个抽象方法,这个类就指定为抽象类."抽象方法"