- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
类继承
类之间的关系
“USES-A”关系
类A用到了类B,即类A操纵类B的成员
“HAS-A”关系
类A拥有类B,即类A中有类B类型的成员引用变量
“IS-A”关系
类A是一种类B,即类A是类B子类的一种(基于继承)
类的继承(extends)
Java中,实际上所有的类均直接或间接继承自java.lang.Object类,也可以说Object类是Java中的总根类。
语法:class 子类名 extends 父类名
{子类类体}
成员变量的继承和隐藏
成员变量是的继承规则
公有成员
对于子类,如果其父类的成员声明为public类型,那么无论这两个类是否在同一个包中,子类均能继承其父类的该成员。
私有成员
当成员变量声明为private类型时,任何子类不能继承该成员。
默认(不写)成员
当成员变量声明为默认类型时,包外的子类不能继承该成员变量,而在包内则相当于public,任何子类都可以继承该成员变量。
受保护的成员
当成员变量被修饰为protected类型时,若访问该变量的类位于包外,只有通过继承才能访问该变量。
成员变量的隐藏
对于成员变量来说,当子类本身具有与继承自父类的成员变量名称相同的成员变量时,便构成了成员变量的隐藏。含义是指,在子类中直接调用该成员变量时,将调用的是子类中本身具有的成员变量,而不是从父类继承的成员变量。在子类中使用super关键字就可以访问该变量。
提示:1、super与this一样,也是一个预定义对象引用,只不过this 表示自己这个对象,而super表示父类对象;
2、super只能在子类中使用,用来访问父类的成员。
对象引用的使用
对象引用能指向的对象类型
指向自身类型的对象实例
指向由父类派生出的直接或间接子类的对象。也就是说,只要类B派生自类A(类B可以不是类A的直接子类),类A的引用变量便可以指向类B的对象。
对象引用的强制类型转换
在运行时,对于成员变量的访问系统认的是引用类型,引用是什么类型的,系统就访问谁的成员。若要访问子类对象的成员,则需要将指向对象的父类引用转换为子类类型。
对象引所能调用的成员
规则:引用只能调用其所在的类具有的成员,不能调用子类特有的成员。
对象引用的赋值与比较
引用的相互赋值
引用赋值时可以直接将子类引用赋给父类引用,若需将父类引用赋给子类引用则必须进行强制类型转换。
引用的比较
相同类型的引用可以进行比较
不同类型的引用要进行比较,其中一个的类型必须派生自另一个,否则编译报错。
方法的继承和重写
方法的继承规则
与成员变量大的继承规则一样
方法重写
重写(覆盖):子类其自身的方法中,若与继承过来的方法具有相同的签名,便构成了方法重写。
当子类引用指向自身对象时,如果子类重写了父类方法,则调用子类重写的方法,否则将调用从父类继承的方法。
当父类引用指向子类对象,若访问被重写的方法,则将访问被重新定义的子类中的方法。
构成重写遵循的规则:
返回类型若为基本数据类型,则返回类型必须完全相同;若为对象引用类型,必须与被重写方法返回类型相同,或派生自被重写方法的返回类型;
访问级别的限制一定不能比被重写方法的窄,可以比被重写方法的宽;
不能重写被表示为final的方法。
提示:方法的调用按对象的类型,无论使用什么类型的引用,其调用的都是具体对象所在类中定义的方法。这与成员变量不同,成员变量按引用的类型。
构成重写的条件
在Java中,方法名与其参数列表共同构成了方法的唯一标识。而方法若想要构成重写,首先方法的唯一标识必须与被重写的方法完全相同。如果只是方法名称相同,而参数不同,不是重写,而是继承以后的方法与新写的方法构成重载。
返回类型的规则
返回类型若为基本数据类型,则返回类型必须完全相同;
若为对象引用类型,必须与被重写方法返回类型相同,或派生自被重写方法 的返回类型;
访问级别的要求
访问级别的限制一定不能比被重写方法的窄,可以比被重写方法的宽;
重写基于继承
继承是重写的基础,没有继承就没有重写。
静态方法没有重写
非静态方法不能重写静态方法
静态方法的隐藏
当子类重写的方法也是静态的时候,其实质是将父类的静态方法隐藏,而并非是将其重写。
注:隐藏是根据引用的类型来进行调用,重写是根据对象的类型来进行调用的。
通过重写扩展父类方法的功能
使用super关键字
替代性原理
在任何情况下,子类应该可以代替父类
方法的重载
方法的重载是指在同一个类里面,有两个或两个以上具有相同名称,不同参数序列的方法。
方法重载的规则
重载的方法参数列表各不相同;
重载方法的返回值类型、访问限制没有特别要求,可以相同也可以不同。
重载的方法匹配
基本类型参数
在方法调用进行匹配时,首先选择直接匹配的方法,如果没有,则将参数进行提升转换后再匹配方法,总是匹配最接近的方法
文档评论(0)