java面向对象(三).ppt_第1页
java面向对象(三).ppt_第2页
java面向对象(三).ppt_第3页
java面向对象(三).ppt_第4页
java面向对象(三).ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

JAVA面向对象编程(三),继承与多态实现,目标,类的继承 多态的实现 抽象类和接口,继承,父 类,子类,官员类,学生类,农民类,人类,非职业人类,职业人类,演员类,教师类,继承,它是面向对象的程序中两个类之间的一种关系,即一个类可以从另一个类(即它的父类)继承属性和行为。被继承的类称为超类(父类),继承父类的类称为子类。子类是父类的一种 类的继承是通过在类的定义过程中,用关键字extends来说明.一次只能继承一个类,即单重继承。 JAVA出于安全、可靠性的考虑,只支持单重继承。,继承的子类定义,类的修饰符 class extends ; ; 在定义子类时用extends关键字指明新定义类的父类,就在两个类之间建立了继承关系。新定义的类称为子类,它可以继承父类的属性和方法,父类:Employee,public class Employee /*父类成员属性*/ private String name; private String sex; private int age; private int salary; /*构造方法*/ public Employee() /有参构造 public Employee(String name, String sex, int age, int salary) = name; this.sex = sex; this.age= age; this.salary = salary; /*父类生存的方法*/ public void liveMethod() System.out.println(“通过工作谋生”); /*显示详细信息的方法*/ public void showSelf() System.out.println(“姓名:”+); System.out.println(“性别:”+this.sex); System.out.println(“年龄:”+this.age); System.out.println(“薪水:”+this.salary); ,public int getAge() return age; public void setAge(int age) this.age = age; public String getName() return name; public void setName(String name) = name; public int getSalary() return salary; public void setSalary(int salary) this.salary = salary; public String getSex() return sex; public void setSex(String sex) this.sex = sex; ,子类:Actor,class Actor extends Employee /* 无参构造*/ public Actor() /*有参构造*/ public Actor(String name,String sex,int age,int salary) /通过set方法赋值 this.setName(name); this.setSex(sex); this.setAge(age); this.setSalary(salary); ,/*重写liveMethod()*/ public void liveMethod() System.out.println(“通过演出谋生”); ,public class TestActor public static void main(String args) Actor actor1 = new Actor(“黄日华“,“男“,28,10000); actor1.showSelf(); actor1.liveMethod(); ,测试类:TestActor,继承的特点,继承的优点,super关键字,子类重写了父类的方法以后,父类的方法在子类中就被覆盖了,如果还想访问父类的方法,需要使用super关键字 构造方法的访问 成员方法的访问,显式调用父类构造方法,通过super关键字访问父类的构造方法,class Actor extends Employee /* 存储演员的角色.*/ private String role; /* 子类构造方法.*/ public Actor(String name, String sex,int age,int salary,String role) super(name,sex,age,salary); this.role = role; ,成员方法的访问,通过super关键字来访问父类的成员方法。,public void showSelf() super.showSelf();/访问父类的成员方法 System.out.println(“角色:“+this.role); ,role:子类中增加的属性,继承注意事项,子类继承父类的属性和方法,不继承构造方法 子类无条件调用父类的无参构造方法 不管是使用无参构造方法创建子类,还是使用有参构造方法创建子类,程序都会默认调用父类的无参构造方法 如果一个类要被其他类继承,父类必须有无参构造方法 在子类的有参构造中可以显式调用父类的有参构造方法 super(参数列表),多态性,多态性是指“多种形式”,在JAVA中表现出来就是调用同名方法但执行不同操作 多态的实现 方法重载 方法重写,方法重载,/只有一个参数String skill public void showSkill(String skill) System.out.println(+”表演”+skill); /playSkill方法的重载,包含多个参数 public void showSkill(String horse,String skill) System.out.println(+”骑着”+horse+”表演”+skill); ,重载小结,重载实现多态性 通过定义类中的多个同名的方法来实现。编译时是根据参数(个数、类型、顺序)的不同来区分不同方法的。 重载发生在同一个类中,所以在调用方法时根据参数的不同调用相应的方法,方法重写,父类和子类中具有相同名称和类型的方法,但方法体不同 Emploree类的liveMethod方法 public void liveMethod() System.out.println(“通过工作谋生“); Actor类的liveMethod方法 public void liveMethod() System.out.println(“通过演出谋生“); ,方法重写特点,重写方法的调用,重写的实质是子类对父类方法的重新定义,父类和子类具有同名的方法,在调用重写的方法时,根据产生对象的类调用相应类的方法 其调用形式为: 父类 父类对象 = new 父类(参数); 子类 子类对象 = new 子类(参数); 父类对象. 方法(); /调用父类的方法 子类对象. 方法(); /调用子类的方法,上转型对象,问题:如下的代码结果是什么? Employee actor2 = new Actor(“翁美玲”,”女”,18,10000,“黄蓉”); actor2.liveMethod(); 因为在继承关系中,子类是父类的一种,子类对象也可以是父类类型,如虎类继承自动物类,虎类的一个对象:一条体格健壮的东北虎。那么这条东北虎的类型是虎类,当然也属于动物类 调用重写的方法时,只看是由哪个类产生的对象,系统会自动调用产生对象的类的方法。 actor2.liveMethod();/调用Actor类的方法 当子类产生的对象指定成父类类型时,该对象称为上转型对象,分析类的继承关系,人类 People,职业人类 Employee,演员类 Actor,演员类是职业人类的一种,职业人类是人类的一种,People类,public class People /成员属性 public String name; public String sex; public int age; /成员方法 public void moveMethod() System.out.println(“直立行走”); public void liveMethod() /人类的生存方法不是具体的 ,抽象类和抽象方法,在创建类时,有些方法不能给出具体的方法体,如果一个方法没有方法体,必须使用abstract关键字来修饰,说名该方法是抽象方法 含有抽象方法的类必须声明为abstract,这样的类叫抽象类。 抽象类定义格式: abstract class 类名 【成员属性;】 【成员方法;】 抽象方法; ,抽象类的定义,abstract class People public String name; public String sex; public int age; public void moveMethod() System.out.println(“直立行走“); abstract public void liveMethod(); /抽象方法 ,抽象类注意事项,抽象类中不一定包含抽象方法,但包含抽象方法的类一定要声明为抽象类 如果一个类被定义为抽象类,则该类不能创建对象 保护抽象类中的数据 抽象类主要是被其他类继承并实现其抽象方法 抽象类通常是相似类的抽象 相似类:拥有相同的属性,不同的方法的类,抽象类的继承和抽象方法的实现,Employee类继承People类并实现liveMethod方法,public class Employee extends People /实现People类中抽象方法 public void liveMethod() System.out.println(“通过工作谋生”); ,Employee类实现了抽象方法后,就可以创建Employee类的对象了,抽象类和其子类,People p1 = new People(); 抽象类不能实例化,Employee e1 = new Employee(); Employee不是抽象类,可以创建对象,接口,如果一个类的所有方法都是抽象的,可以用另一种方法来定义,就是接口。 接口的定义 修饰符 interface 接口名 extends 父接口名表 常量属性 修饰符返回值类型 方法名(参数表); /抽象方法声明 ,例子:使用interface关键字定义接口 public interface Animal void moveMethod();/动物的移动是不确定的 void liveMethod(); /生存方式也是不确定的 所有定义在接口中的常量都默认为public、 static和final。 所有定义在接口中的方法默认为 public 和 abstract 从本质上讲:接口是一种特殊的抽象类,这种抽象类只包含常量值和方法的定义,没有变量和方法的具体实现 接口主要是提供常量值和方法的声明,其它类通过实现其声明的方法,完成自己的特定的功能,接口,接口实现,接口实现 格式:修饰符 class 类名 implements 接口名 /必须实现接口的所有方法 案例:Tiger.java Bird.java 因为接口中的方法都是public类型的,在实现接口的类中实现其方法时也必须声明为public 实现接口的类必须实现接口的所有方法(大括号),可以没有方法体,接口总结,接口:有一个构思,要造一个东西,这个东西能够完成什么功能,但这些功能如何实现的不确定(发明家) 实现接口:发明家开始想办法如何把想到的功能实现,一旦实现了某个接口,就可以根据实现的这个接口量化生产产品(对象) 接口的存在:如果已经有了具体的实现类,人们可以直接使用实现类就可以了。但不同的人实现的方法是不同的,接口可供开发人员进行扩展 一个类可以实现多个接口,从而扩展了JAVA中只允许单继承的特点,抽象类和接口使用规则,当在共性较多的对象间寻求

温馨提示

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

评论

0/150

提交评论