




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本次内容本次内容类的继承类的继承4123方法的多态性方法的多态性抽象类和最终类抽象类和最终类接口接口一、类的继承一、类的继承1 1用户的需求变化用户的需求变化2 2模块重用模块重用在大型应用程序的维护和设计中,经常存在两个问题:在大型应用程序的维护和设计中,经常存在两个问题:1 1、引入、引入继承继承是面向对象三大特征之一,也是实现软件是面向对象三大特征之一,也是实现软件复用的重要手段。复用的重要手段。一、类的继承一、类的继承2 2、继承、继承(1)(1)1、由继承而得到的新类称为子类,被继承的类称为父类或超类。2、父类和子类的关系,是一般和特殊的关系。一、类的继承一、类的继承2 2、继承、继
2、承(2)(2)类定义语句格式:class thisclass extends superclass子类父类子类扩展了父类,将可以获得父类的全部属性子类扩展了父类,将可以获得父类的全部属性和方法,但和方法,但JavaJava中的子类中的子类不能获得父类的构造不能获得父类的构造方法方法。如果类定义时没有如果类定义时没有extendsextends关键字,则其父类是关键字,则其父类是ObjectObject 。2 2、继承、继承(3)(3)public class Fruit public double weight; public void info() System.out.print(“我是一
3、个水果!重我是一个水果!重”+weight+”g!”); Fruit.javapublic class Apple extends Fruitpublic static void main(String args)Apple a =new apple();a.weight=56;(); Apple.java一、类的继承一、类的继承例子:PersonTeacherStudent2 2、继承、继承(4)(4)继承多继承单继承Java只支持单继承有了继承机制,多个类可以互相关联,就不再有了继承机制,多个类可以互相关联,就不再是各自封闭的了。是各自封闭的了。一、类的继承一、类的继承3 3、
4、重写子类、重写子类(1)(1)如果子类声明一个与父类成员变量同名的成员变量,则不能继承父类的同名成员变量。此时称子类的成员变量隐藏了父类中的同名成员变量。子类继承父类的一、类的继承一、类的继承3 3、重写子类、重写子类(2)(2)如果子类方法与父类方法同名,则不能继承。此时称子类方法重写了父类中的同名方法。子类继承父类的不能继承父类的构造方法。一、类的继承一、类的继承3 3、重写子类、重写子类(3)(3)方法重写遵循的规则覆盖方法和被覆盖方法要么都是类方法,要么都覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方是实例方法,不能一个是类方法,一个是实例方法。法
5、。一、类的继承一、类的继承子类不能重写父类私有的方法子类不能重写父类私有的方法 子类的方法不能比父类的方法有更严格的访问权限子类的方法不能比父类的方法有更严格的访问权限(子类子类的方法不能缩小父类方法的访问权限的方法不能缩小父类方法的访问权限 重写的方法要和被重写的方法的方法名称、参数列表、重写的方法要和被重写的方法的方法名称、参数列表、返回类型都要一样返回类型都要一样 若父类方法的访问权限是private则子类方法的访问权限可以是private、默认的、protected、public; 若父类方法的访问权限是protected则子类方法的访问权限可以是默认的、protected、publi
6、c; 若父类方法的访问权限是默认的则子类方法的访问权限可以是protected、public; 若父类方法的访问权限是public则子类方法的访问权限只能是public方法重写遵循的规则方法重写遵循的规则3 3、重写子类、重写子类(4)(4)如果父类方法具有private权限,则该方法对其子类是隐藏的,因此子类无法重写该方法。class BaseClass private void test() class SubClass extends BaseClass public void test()此处不是方法重写,只是在子类中重新定义了一个新方法一、类的继承一、类的继承3 3、重写子类、重写子
7、类(5)(5)Overloading和和overriding一样么?一样么?一、类的继承一、类的继承4 4、super(2)super(2)super的两种用法用来访问由子类成员所隐藏的超类成员用来调用超类的构造函数一、类的继承一、类的继承4 4、super(1)super(1)class Bird public void fly() System.out.println(“我在天空里自由自在地飞翔我在天空里自由自在地飞翔”); public class Ostrich extends Bird/鸵鸟类鸵鸟类 public void fly() System.out.println(“我只能在
8、地上奔跑我只能在地上奔跑”); public void callOverrideMethod() /在子类方法中调用父类被覆盖的实例方法在子类方法中调用父类被覆盖的实例方法 super.fly();直接父类对象的默认引用一、类的继承一、类的继承Super_2续不管是否使用不管是否使用supersuper调用父类的构造方法,调用父类的构造方法,子类构造方法总会调用父类的构造方法一次。子类构造方法总会调用父类的构造方法一次。三种情况子类构造器使用super调用父类构造器,系统将根据super调用里传入的实参列表调用父类对应的构造器子类构造器使用this调用本类中重载的构造器,系统将根据this调用
9、里传入的实参列表调用本类另一个构造器。执行本类中另一个构造器时即会调用父类的构造器子类构造器中既没有super调用,也没有this调用,系统将会在执行子类构造器之前,隐式调用父类无参数的构造器Super_2续java.lang.ObjectClassAClassB每个子类将继承各自的所有父类中所定义的全部属性。Super(3) 关键字关键字this:是直接访问本类中的内容; this.本类属性,调用本类中的属性; this.本类方法(),可以不写this,也表示调用本类的; this是访问本类中的其他构造,必须放在首行。 关键字关键字super:是由子类访问父类的内容; super.父类属性,
10、如果属性没有被覆写,则也可以不写super; super.父类方法(),如果方法没有被覆写,则可以不用加super也表示调用父类中的方法; super是访问父类中的构造方法,必须放在首行。5 5、初始化顺序、初始化顺序父类子类1、父类静态、子类静态2、父类定义初始化、构造函数3、子类定义初始化、构造函数一、类的继承一、类的继承成员变量的隐藏class MobileTelephone String cloth=“银灰色银灰色”; class NewMobileTelephone extends MobileTelephone String cloth=“牙白色牙白色”;public class
11、MainMobile public static void main(String args) NewMobileTelephone tel=new NewMobileTelephone(); System.out.println(“我有我有”+tel.cloth+”外壳!外壳!”); 隐藏了父类的color属性重写父类的方法class Bird public void fly() System.out.println(“我在天空里自由自在地飞翔我在天空里自由自在地飞翔”); public class Ostrich extends Bird/鸵鸟类鸵鸟类 public void fly()
12、System.out.println(“我只能在地上奔跑我只能在地上奔跑”); public static void main(String args) Ostrich os=new Ostrich(); os.fly(); 重写父类的fly方法方法覆盖、方法重写(override)重载和重写重载和重写class Box /父类父类 double length,width,height; Box() length=-1;width=-1;height=-1; Box(doublel,double w,double h) /方法重载方法重载length=l;width=w;height=h; d
13、raw() System.out.println(draw a box!);class Boxcolor extends Box/继承继承int color; /多了个颜色的变量多了个颜色的变量Boxcolor(doublel,double w,double h,int c) length=l;width=w;height=h;color=c; draw() System.out.println(draw a colorful box!); 主要发生在同一个类的多个同名方法之间发生在子类和父类的同名方法之间Super_1class BaseClasspublic int a = 5;class
14、 SubClass extends BaseClass public int a = 7; public void accessOwner() System.out.println(a); public void accessBase() System.out.println(super.a); public static void main(String args) SubClass sc = new SubClass();System.out.println(sc.a);sc.accessOwner();sc.accessBase(); 通过super来访问方法调用者对应的父类对象Supe
15、r_2class Basepublic double size;public String name; public Base(double size , String name) this.size = size; = name; public class Sub extends Base public String color; public Sub(double size , String name , String color) super(size , name);this.color = color; public static void main(String
16、args) Sub s = new Sub(5.6 , 测试对象测试对象 , 红色红色); System.out.println(s.size + - + + - + s.color); 调用父类的构造方法,必须出现在子类构造方法的第一行Object类的方法类的方法 1toString():用来打印一个类的对象(Eclipse使用) 2equals():比较两个对象是否相等二、方法的多态性多态性:发送消息给某个对象,让该对象自行决定响应何种行为。通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。java的这种机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象
17、的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。1.如果a是类A的一个引用,那么,a可以指向类A的一个实例,或者说指向类A的一个子类。2.如果a是接口A的一个引用,那么,a必须指向实现了接口A的一个类的实例。二、方法的多态性引用变量有两个类型编译时的类型运行时的类型由声明该变量时使用的类型决定由实际赋给该变量的对象决定如果编译时的类型和运行时类型不一致,就如果编译时的类型和运行时类型不一致,就出现多态(出现多态(PolymorphismPolymorphism)。)。Hello h=new TestHello();Hell
18、o h=new Hello();二、方法的多态性class BaseClass public int book = 6; public void base() System.out.println (父类的普通方法 ); public void test() System.out.println (父类的被覆盖的方法 ); public class SubClass extends BaseClasspublic String book = 轻量级轻量级J2EE企业应用实战企业应用实战;public void test() System.out.println(子类的覆盖父类的方法子类的覆盖父
19、类的方法);public void sub()System.out.println(子类的普通方法子类的普通方法);public static void main(String args)BaseClass bc = new BaseClass();System.out.println(bc.book);bc.base();bc.test();SubClass sc = new SubClass();System.out.println(sc.book);sc.base();sc.test();sc.sub();BaseClass ploymophicBc = new SubClass();System.out.println(ploymophicBc.book);ploymophicBc.base();ploymophicBc.test();编译时类型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46067-2025城市全域数字化转型城市实体对象标识系统总体要求
- 古代遗迹发掘与学术研究承诺书(3篇)
- 2025年青光眼用药项目规划申请报告
- 智能制造过程管控承诺书(7篇)
- 快乐运动会的场景描写记叙文7篇范文
- 推进健康安全管理保证承诺书7篇
- 企业质量管控能力提升承诺书4篇
- 2025贵州剑河县农村集体经济组织选聘职业经理人(总经理)17人模拟试卷及完整答案详解一套
- 2025年山东土地乡村振兴集团有限公司招聘考前自测高频考点模拟试题及答案详解(网校专用)
- 一次难忘的比赛记叙文描写比赛的经过6篇
- 小学体育教师业务考试试卷及答案
- 国家德育工作指南
- 土地估价技术培训课件
- 供应链管理师三级实操考试题库及答案
- 经典酶基因变异功能-洞察及研究
- 2025政府机关保密协议书的范文
- 安徽省滁州市名校2026届中考冲刺卷语文试题含解析
- 中国艺术歌曲课件
- 2025至2030BOPP薄膜行业市场行业市场深度研究及发展前景投资可行性分析报告
- 抖音基础入门教程课件
- 贷款清收培训课件
评论
0/150
提交评论