利用已有成果继承与多态PPT学习教案_第1页
利用已有成果继承与多态PPT学习教案_第2页
利用已有成果继承与多态PPT学习教案_第3页
利用已有成果继承与多态PPT学习教案_第4页
利用已有成果继承与多态PPT学习教案_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1 利用已有成果继承与多态利用已有成果继承与多态 1、直接改动源代码,使之实现新的功能、直接改动源代码,使之实现新的功能 2、复制原有代码,对复制的代码进行改动、复制原有代码,对复制的代码进行改动 第1页/共58页 一、修改过程中很容易产生一些新的错误,导致原有一、修改过程中很容易产生一些新的错误,导致原有 程序运行不正确;程序运行不正确; 二、复制代码的时候可能产生错误,而且使程序的二、复制代码的时候可能产生错误,而且使程序的 可移植性可移植性和和重用性重用性变差。变差。 第2页/共58页 在程序中定义类的时候,如果发现它的某些成员在程序中定义类的时候,如果发现它的某些成员 (变量及方

2、法)已经在另一个类中定义过了,(变量及方法)已经在另一个类中定义过了, 如果再定义就显得累赘。如果再定义就显得累赘。 第3页/共58页 父类父类 子类子类 继承 extends 5.1继承继承 第4页/共58页 中的Object类。 5.1继承继承 第5页/共58页 5.1继承继承 关于改写父类方法与子类个性化定义关于改写父类方法与子类个性化定义 能继承?不能继承?不 能继承?能继承? 第6页/共58页 学生 小学生中学生大学生 研究生本科生 在在学生学生类中定义好各类类中定义好各类 学生共性的内容,各子类学生共性的内容,各子类 中只需定义自己特有的内中只需定义自己特有的内 容。容。 父类父类

3、学生学生类实际上是对类实际上是对 各类学生的概括和抽象。各类学生的概括和抽象。 第7页/共58页 图形 三维图形二维图形 园形三角形矩形 正方形 圆锥体球体立方体 第8页/共58页 第9页/共58页 第10页/共58页 第11页/共58页 第12页/共58页 n 第13页/共58页 方法: accelerate() 属性: color speed Vehicle类类 方法: accelerate() decelerate() 属性: color speed fuelConsum Automobile类类 第14页/共58页 第15页/共58页 方法: accelerate() 属性: colo

4、r speed Vehicle类类 方法: accelerate() decelerate() 属性: color speed fuelConsum Automobile类类 方法: accelerate() decelerate() 属性: color speed fuelConsum price Car类类 Vehicle类、类、Automobile类及类及Car类的属性及方法:类的属性及方法: 第16页/共58页 不就多写几行不就多写几行 代码嘛,弄个代码嘛,弄个 啥继承?啥继承?/example1 class ClassA int doThis() int doThat() 第17页/

5、共58页 /example2 class ClassB classA a = new ClassA(); int doThis() return a.doThis(); int doThat() return a.doThis(); /example1 class ClassA int doThis() int doThat() 第18页/共58页 /example1 class Person String name; int age; /example1 class Student String name; int age; String dept; 第19页/共58页 /example2

6、class Person String name; int age; class Student extends Person String dept; 第20页/共58页 注意:注意:1.子类此时将有子类此时将有两个同名属性两个同名属性,一个是继承自父类的,一个是继承自父类的, 一个是自定义的一个是自定义的 2.当子类当子类执行继承自父类的方法执行继承自父类的方法时,时,处理的是继承自父类的属性处理的是继承自父类的属性 3.当子类当子类执行自定义的方法执行自定义的方法时,时,处理的是自定义的属性处理的是自定义的属性 4.可以使用关键字可以使用关键字super来实现父类属性的直接应用来实现父类

7、属性的直接应用 第21页/共58页 1. 属性的继承之属性的覆盖属性的继承之属性的覆盖 public class Father int a = 100; public void miner() a-; public static void main(String args) Father x = new Father(); Son y = new Son(); System.out.println(a of son is: + y.a); System.out.println(a of sons super is: + y.getA(); y.miner(); System.out.print

8、ln(a of son is : + y.a); System.out.println(a of sons super is: + y.getA(); 第22页/共58页 class Son extends Father int a = 1; public void plus() a+; public int getA() return super.a; 1. 属性的继承之属性的覆盖属性的继承之属性的覆盖 第23页/共58页 5)覆盖方法不能使用比被覆盖方法更严格的 访问权限。 第24页/共58页 2. 方法的继承之重载与覆盖方法的继承之重载与覆盖 第25页/共58页 2. 方法的继承例方法的

9、继承例 第26页/共58页 2. 方法的继承例方法的继承例 public class Student extends Person protected String dept; public static void main(String args) Person p = new Person(); p.set(Richard, 23); p.print(); Student s = new Student(); s.set(Drodan, 34); s.dept = computer; s.print(); 第27页/共58页 2. 方法的继承之方法的继承之final class Fathe

10、r public final void mathod() System.out.print(the fathers mathod); 第28页/共58页 class Son extends Father public void mathod(int i)/如果没有形参如果没有形参i,就和,就和 /父类方法相同父类方法相同 super.mathod(); System.out.println(the sons mathod+i); 2. 方法的继承之方法的继承之final 第29页/共58页 2. 方法的继承之方法的继承之构造函数构造函数 第30页/共58页 2. 方法的继承之方法的继承之构造函

11、数构造函数 当所有构造函数都需要把某当所有构造函数都需要把某 一变量都赋于相同值时一变量都赋于相同值时 第31页/共58页 2. 方法的继承之方法的继承之构造函数构造函数 class Person String name; int age; Person(String n) name = n; Person(String n,int a) this(n); /调用第一个构造函数调用第一个构造函数 age = a; 第32页/共58页 2. 方法的继承之方法的继承之构造函数构造函数 class Student extends Person int sid; Student(String n,in

12、t a,int id) super(n,a); /必须是第一条语句必须是第一条语句 sid = id; 第33页/共58页 2. 方法的继承之方法的继承之构造函数构造函数 第34页/共58页 2. 方法的继承之方法的继承之构造函数构造函数 class Father Father() System.out.println(这是父类的构造函数这是父类的构造函数); public class Son extends Father public static void main(String s) Son a = new Son(); 第35页/共58页 2. 方法的继承之方法的继承之构造函数构造函数

13、 public class Son extends Father Son() System.out.println(这是子类的构造函数这是子类的构造函数 ); public static void main(String s) Son a = new Son(); 第36页/共58页 2. 方法的继承之方法的继承之构造函数构造函数 class Father Father() System.out.println(这是父类的构造函数这是父类的构造函数); Father(int a) System.out.println(这是父类的构造函数这是父类的构造函数 +a); 第37页/共58页 2. 方

14、法的继承之方法的继承之构造函数构造函数 public class Son extends Father Son() super(2); System.out.println(这是子类的构造函数这是子类的构造函数); public static void main(String s) Son a = new Son(); 第38页/共58页 2. 方法的继承之方法的继承之综合实例综合实例 class Father private String s = Father; public void append(String a)s += a; /字符串相加再赋予原串字符串相加再赋予原串 public

15、void dilute() append( dilute(); public void apply() append( apply(); public void scrub() append( scrub(); public void print() System.out.println(s); 第39页/共58页 public class Son extends Father public void scrub() /覆盖父类的方法覆盖父类的方法 append( Son.scrub(); super.scrub(); public void foam() /自己定义的方法自己定义的方法 ap

16、pend( foam(); public static void main(String args) Son x = new Son(); System.out.println(sub class has:); x.dilute(); x.apply(); x.scrub(); x.foam(); x.print(); 第40页/共58页 1.由由final修饰的类是最终类,修饰的类是最终类,不能被继承不能被继承, 该类处于继承树的叶子,不能再有子类该类处于继承树的叶子,不能再有子类 2.一个类被声明为一个类被声明为final类,则其所有方法类,则其所有方法 都默认为都默认为final型型,不

17、包括变量,不包括变量 第41页/共58页 public class Son extends Father public static void main(String s) Son a = new Son(); final class Father /final不能被继承不能被继承 第42页/共58页 第43页/共58页 第44页/共58页 1.多态之多态之覆盖覆盖 public class A public String toString() return “类名类名A”; public class B extend A public String toString() return “类名类名B”; 第45页/共58页 2.多态之多态之重载重载 class Compute public calNum(int a,int b) public calNum(float a,float b) public calNum(double a,double b) 第46页/共58页 第47页/共58页 第48页/共58页 第49页/共58页 第50页/共58页 cla

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论