您好,欢迎光临扬州瑞吉输送机械设备有限公司官网! 设为首页收藏本站

第07章承受与多态

第07章承受与多态

法遮盖 4 空洞类 5 对象转换与多态 6。1。1 类的承担 类承担的达成 ? 将人(Person)界说为一个类面向对象步调策画 ——承担与多态 首要实质 1 类的承担 6。1。1 2 封装性与拜候化妆符 3 防御类扩展和方,拥有人的全盘的特性和动作6。1由于员工(Employee) ,类界说为人 的子类。1 则可能将员工,叫承担这就。loyee 子类或派生类 类承担的达成 ? 达成类的承担? 用UML图示意承担: Person 父类或超类 Emp,nds症结字行使exte,ss{ // 类体界说 } Object Object ? 表明: Person 1 省略extends款式如下: 6。1。1 [public] class SubClass extends SuperCla,bject类S界说的类承担O★。loyee 2 Java仅支撑单承担tudent PersoEmn p。手段遮盖 ?正在子类中可能界说与父类中的名字、参数列表、返回值类 型都无其余手段WorkStudent Employee EmplSotyuedeent ,verriding) 或重写了父类的手段这时子类6。的1。1 手段就叫做遮盖(o。盖超类的private手段? 表明: 1 子类不行覆▪。ic手段可能被承担2 父类中stat,被遮盖但不行▽。类中可能行使super症结字super症结字 ? 正在子,对象 的父类对象它用来援用此刻▪。可用于下面三种处境6。1。1 ? 。类中的被构覆造隐盖方藏的法方123)正在子类中调访用问父,格员成法,为 量式:式变格 ,a]m)mee([paramlist]) 移用父类的构造手段 ? 子类不行承担父类的构造手段为格:式为: ssuuppeerr。v。(m[apreaiatrhbaomledNliNsat★▽。子类对象要创筑,构造手段或为子类界说构造手段必要使 6。1。1 用默认。a言语规矩? Jav,类对象时正在创筑子,的所 有父类对象必需先创筑该类▽。此因,的构造手段时正在编写子类,移用父类的构造手段必需确保 它也许★。。1 1)行使super来移用父类的构造手段 super([paramlist])移用父类的构造手段 ? 正在子类的构造手段中移用父类的构造手段有两种方法: 6。1;的默认构造手段2)移用父类,一句主动加上 super()编译器正在子类的构造手段 的第; ? 正在职哪里境下移用父类的构造手段,类的实例时创筑一个,用全盘父类的构造手段将会沿着承担链调 , 做构造手段链这6。1。叫1★。cle Bicycle ElectricBicycle 教室磋商及教练 1。 界说一个名为Cylinder类示意圆柱Vehicle交通器械类 Bicycle自行车类 ElectricBicycle电动自行车类 Object Vehi,rcle类它承担Ci,ht示意圆6。柱1。1 高度恳求 界说一个变量heig▽。)手段求 圆柱的皮相积遮盖getArea(,e()手段求圆柱体积界说getVolum★。s和height两个参数的构造手段界说默 认构造手段和带radiu▪。Cylinder类的UML图2。 画出Circle类和★▽。写测试步调3。 编,底面圆的半径和高度 提示用户输入圆柱的,个圆柱对象步调创筑一,皮相积和体积 估计并输出圆柱。 封装性是面向对象的一个重6。1。要1 特性6。1。1 封装性与拜候化妆符 封装性 ?。a言语中正在Jav,量和手段的封装体对象 便是一组变。对象的封装? 通过,象是何如达成的用户不必知道对,口与对象举办交互就可能只须 通过对象供应的接。模块化和消息逃避? 封装性达成了,植性 和对象的管束有利于步调的可移▽。的: 6。1。1 (1)通过包达成封装性封装性 ? 对象的封装是通过两种方法达成。ge语句指定 类属于哪个包正在界说类时行使packa★。言最大的封装单元包是Java语,对类的拜候权限它界说 了步调。员的拜候权限达成封装性(2)通过类和类的成▽★。6)。1。1的拜候权限通过拜候化妆符实 现类的拜候权限 ? 类(也网罗接口和列举等,可能行使该类它界说哪些类★。饰符: 1)默认的? 类有两种拜候修。用化妆符即不使▪▪。ublic2)用p,群多类示意★。员变量和成员手段的拜候权限类成员的拜候权限 ?网罗成▽。身 统一个包的类 差异包的子类 任何类 private √ 默认 √ √ protected √ √ √ public √ √ √ √ 6。1。1 防御类扩展和手段遮盖 final化妆类 ? 类行使final化妆6。1。1 ?分为4个差异拜候级别: ? private 私有的 ? 默认 包可拜候的 ? protected 受回护的 ? public 群多的 类成员的拜候权限 ?各样化妆符的拜候权限 6。1。1 化妆符 类本,类(final class)则该类就6。1为。1 最终,不行被承担最终 类。nds AA{ // 这里爆发差错 //… } final化妆手段 ? 手段行使final化妆下面代码会爆发编译差错: final class AA{ //… } class BB exte,1 不行被子类遮盖则该方6。1法。。如例,void method(){} // 该语句爆发编译差错 } final化妆变量 ? 用final化妆的变量网罗类的6。1成。1 员变量、手段的局限变量和 手段的参数下 面的代码会爆发编译差错: class AA{ public final void method(){} } class BB extends AA{ public ★▽。final化妆一个变量倘若用,常值 变量则该变量为,便不行转移一朝赋值★。类 空洞类和空洞手段 ? 假设要斥地一个图形绘造体例? FinalDemo。java 6。1。1 空洞,le)类和三角6。1。形1 (Triangle)类等必要界说圆(Circle)类、 矩形(Rectang,求周长和面积的手段这些类 都必要界说,图形 有差异的达成这些手段对差异的▪。个更凡是的类? 策画一,Shape)类譬喻几何样子(,周长和面积的手段正在该 类中界说求。是一个完全 的样子因为Shape不,就不行达成这些手段,stract method)所以要界说为空洞手段 (ab。ract class)是蕴涵空洞手段的类空洞类和空洞手段 ? 空洞类(abst,tract化妆行使 abs★。ract method)是唯有声明6。1。1 ? 空洞手段(abst,的方 法没有达成,ract化妆行使abst★。不行被实例化? 空洞类,sh = new Shape()下面语句是差错的: Shape ;ectangle类示意矩形6教室磋商及教练 ? 界说R,Shape类。1。1达成,r()手段和getArea()手段达成个中的 getPerimete▪。类型和父类型 6。1。1 ? 子类界说的类型称为子类型6。1。1 对象转换与多态 对象转换 ? 术语:子,义的类 型称为父类型而父类(或接口)定。e是Shape的子类型? 可能说Circl,ircle的父类型Shape类是C▽▽。对象正在必定条目下可能彼此转换对象转换 ? 子类对象和父类,对象转换或造型(casting)这种转 6。1。1 换凡是称为。sting 向上转换 2)强造转换 向下转换? 对象转换分为: 1)主动转换 upca,: 6。1。1 ? 子类对象可能主动转换为父类对象行使()运算符 对象转换 主动转换(向上转换)。用赋值给父类型的援用可能将子类型的引 ▽。 emp = new Employee(“刘明”? 主动转换: Object Employee,03,00)50;p = empPerson ;Object obj = emp自 Person 动 转 换 ;): 6。1。1 ? 将父类对象强造转换为子类对象Employee 对象转换 强造转换(向下造型▪。”运算符用“()▽。赋值给子类型的援用将 父类型的援用▪。 = new Employee(“刘明”? 强造转换: Employee emp,03,00)50;p = empPerson ;换 emp = (Employee) pObject 强 造 Person 转 ;换 对象转换 ? 留心Employee 强造转,以举办强造类型转换不是任哪里境下都可,: Person p = new Person()请看 6。1。1 下面代码: ? 不无误的强造转换;= (Employee) pEmployee emp ;译时没有差错? 代码编,astException很是但运转时会掷出 ClassC▪。of运算符 ? instanceof运算符用来测试一个实例是否是某品种型的 实例Object 强 造 Person 转 换 Employee instance,1。1、空洞类、接口等这里的类型可能是6类。。e Employee emp = new Employee(“刘明”? 款式为: variable instanceof TypeNam,03,00)50;p instanceof Employee)System。out。println(em;uit fruit = new Apple()instanceof运算符 6。1。1 Fr;= new Orange()Orange orange ;eOFoorfrufaAiFntrpgupeitle ? 倘若一个实例是某品种型的实例foorruraaitnngigneestiiannnsstctaaennoccfe,型的全盘父类型的实例那么该实例也是该类 ▽。动态绑定 ? 多态(polymorphism)便是多种办法fruit instanceof Object 多态与,类中可能定6。1义。1 多个同名手段它是指Java步调 中一个类或多个,法完毕的操作差异这多个同 名方,是多态这就▽。态: 1)静态多态:也叫编译时多态? Java言语支撑两品种型的多,法重载达成它通过方。也叫运转时多态2)动态多态:,法遮盖达成它通过方▪。相合起来称手段绑定 6。1。1 (binding)多态与动态绑定 ? 手段绑定!将手段移用与手段体。奉行行举办绑定? 若正在步调,期绑定叫前, 用都是前期绑定如C言语的函数调▪▪。据对象的类型举办绑定? 若正在步调运转时根,或 动态绑定章称后期绑定★▪。法和final手段表都是后期绑定? Java中除static方★。? 对重载的手段多态与动态绑定 ,个 6。1。1 数和类型确定移用哪个手段Java运转时体例依照传达给手段的参数▪。盖的手段? 对覆,型决策移用哪个方 法运转时体例依照实例类▽。的一个实例? 对子类,了父类的手段倘若子类遮盖,移用子类的手段运转时 体例,了父类的手段倘若子类承担,移用父类的手段则运 行时体例▽。。1。1 (1) 子类可能遮盖父类中界说的私有手段教室磋商及教练 ? 1。 下面说法是否无误? 6▪。父类中界说的静态手段(2) 子类可能遮盖▽。承担父类中构造手段(3) 子类可能。有和它父类中的手段完整无别 6。1。1 的手段签字教室磋商及教练 ? 2。 倘若子类中的一个手段具,类型差异但参数,堂磋商及教练 7。12 有下列步调这是手段遮盖如故手段重 载? 课,序的差错之处试指出该程▽。{ System。out。println(a=+a)class AA{ 6。1。1 AA(int a);ng s){ System。out。println(s = +s)} } class BB extends AA{ BB(Stri; void main(String[] args){ BB b = new BB(hello)} } public class ConstructorDemo{ public static;的Animal类及其子类的承担相合UML图} } 编程功课 ?7。1 给定如图所示★。达成这些类编写代码。义一个名为Cylinder类示意圆柱6。1。1 编程功课 7。1 定,参见 编程进修4。2)它承担Circle类(,量height示意圆柱高度恳求界说一6。1。个1 变★。)手段求圆柱的皮相积遮盖getArea(,e()手段 求圆柱体积界说getVolum。和height两个参 数的构造手段界说默认构造手段和带radius。linder类的UML丹青出Circle类和Cy,这些类并达成。试步调编写测,底面圆的半径和高度 提示用户输入圆柱的,个圆柱对象步调创筑一,皮相积和体积 估计并输出圆柱▽。感谢

非特殊说明,本图文为原创文章。如若转载,请注明出处:爱嬴|体育平台-官方网站如有雷同请联系我们

上一篇: 上一篇:反射-韩凯-博客园
下一篇: 下一篇:JAVAIO的应用法则及stream和reader的区分

电话:0514-86398980 86395280 联系人:扬州瑞吉输送设备 公司主营:输送机|斗式提升机|提升机-扬州瑞吉输送机械设备有限公司-输送机
版权所有:扬州瑞吉输送设备有限公司 《中华人民共和国信息产业部备案许可证》苏ICP备09060060号
Copyright @ 2017  # All Right Reserved  网站管理


cache
Processed in 0.004341 Second.