第4章--面向对象程序设计(高级篇)PPT.ppt

第4章--面向对象程序设计(高级篇)PPT.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章--面向对象程序设计(高级篇)PPT

③ 方法覆盖后,通过super关键字调用父类的方法 public class Student extends Person { public void showInfo(){ super.showInfo(); System.out.println(,你的英语成绩是:+engScore+, JAVA成绩是:+javaScore); } } 3. 父类对象与子类对象的转化 假设B类是A类子类或间接子类,当我们用子类B创建一个对象,并把这个对象的引用赋给A类的对象: A a; B b=new B(); a = b; 称这个A类对象:a是子类对象b的上转型对象. 子类对象可以赋给父类对象,但指向子类的父类对象 不能操作子类新增的成员变量,不能使用子类新增的方法。 上转型对象可以操作子类继承或隐藏成员变量,也可以使用子类继承的或重写的方法。 可以将对象的上转型对象再强制转换到一个子类对象,该子类对象又具备了子类所有属性和功能。 如果子类重写了父类的方法,那么重写方法的调用原则如下:Java运行时系统根据调用该方法的实例,来决定调用哪个方法。 对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。 总之,父类对象和子类对象的转化需要注意如下原则: ① 子类对象可以被视为是其父类的一个对象。 ② 父类对象不能被当作是其某一个子类的对象。 ③ 如果一个方法的形式参数定义的是父类对象,那么调用这个方法时,可以使用子类对象作为实际参数。 Java语言中,用abstract关键字来修饰一个类时,这个类叫做抽象类。抽象类只关心它的子类是否具有某种功能,并不关心该功能的具体实现,功能的具体行为由子类负责实现的。一个抽象类中可以有一个或多个抽象方法。 4.4.1 抽象类的定义 抽象类的一般格式: abstract class ClassName { //类实现………… } 如abstract class ClassOne{ //类实现 } 4.4 抽象类 一旦ClassOne类声明为抽象类,则它不能被实例化,只能用作派生类的基类而存在。下面的语句会产生编译错误: ClassOne a = new ClassOne(); 抽象方法的一般格式: abstract 返回值类型 抽象方法( 参数列表 ); 如语句public abstract void Method(); 抽象方法的一个主要目的就是为所有子类定义一个统一的接口,抽象方法必须被重写。 抽象类必须被继承,抽象方法必须被重写。抽象方法只需声明,无需实现;抽象类不能被实例化,抽象类不一定要包含抽象方法。若类中包含了抽象方法,则该类必须被定义为抽象类。 抽象类有以下的定义规则: ? 抽象类必须用abstract关键字来修饰;抽象方法也必须用abstract来修饰。 ? 抽象类不能被实例化,也就是不能用new关键字去产生对象。 ? 抽象方法只需声明,而不需实现。 ? 含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。 具体实现可参考下面两段的代码。 (1)抽象类的基本实现方法 abstract class Base{ int basevar; // 成员变量 public abstract void M1(); // 抽象的成员函数,只有声明,没有集体的实现,、//必须在该类的子类实现方法 ……. } class Derived extends Base{ int derivedvars; // 成员变量 public void M1(){ //子类必须重写父类的抽象成员函数M1 // 实际实现的语句体 } …….. } (2)继承于抽象类的类一般应该实现抽象类中的所有抽象方法(重写)。如果没有,那么该派生类也应该声明为抽象类。

文档评论(0)

djdjix + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档