JAVA抽象类与接口技术_第1页
JAVA抽象类与接口技术_第2页
JAVA抽象类与接口技术_第3页
JAVA抽象类与接口技术_第4页
JAVA抽象类与接口技术_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

3 1 抽象类 抽象类 抽象类实际上也是一个类 只是与之前的普通类相比 在抽象类中多了抽 象方法 抽象方法是只声明而未实现的方法 所有的抽象方法必须使用 abstract 关 键字声明 包含抽象方法的类也必须使用 abstract class 声明 一个抽象类的定义 abstract class A private String name WWW public void fun 此处定义了一个普通方法 System out println Hello World public abstract void print 可以发现抽象方法后面没有 则表示方法没有实现 如果对抽象方法直接实例化 则会出现无法实例化的错误 abstract class A private String name WWW public void fun 此处定义了一个普通方法 System out println Hello World public abstract void print public class Demo01 public static void main String args A a new A 抽象类的使用原则 抽象类的使用原则 1 抽象类必须有子类 抽象类必须被继承 2 抽象类的子类如果不是抽象类的话 则必须覆写里面的全部抽象方法 3 抽象类不能直接实例化 必须依靠子类完成 进一步完善之前的程序 abstract class A private String name WWW public void fun 此处定义了一个普通方法 System out println Hello World public abstract void print class B extends A 覆写抽象方法 public void print System out println public class Demo02 public static void main String args B b new B b print b fun 讨论问题 讨论问题 1 能否用 final 修饰一个抽象类呢 因为抽象类必须被子类继承 而被 final 修饰的类不能有子类 所以 不能 2 抽象类中能否有构造方法呢 可以有 abstract class Person private String name private int age 单独按一个类来说 应该可以直接在构造方法中初始化 public Person String name int age this name name this age age public abstract String getInfo public String getName return this name public int getAge return this age class Student extends Person private String school public Student String name int age String school super name age this school school public String getInfo return 姓名 super getName 年龄 super getAge 学校 this school public class Demo03 public static void main String args Student stu new Student 张三 30 北京大学 System out println stu getInfo 抽象类中可以有构造方法 但是要求在没有无参构造方法的时候 子类必 须明确的调用父类中的构造方法 回顾 回顾 子类对象的实例化过程 子类对象实例化的时候默认会先去调用父类中的无参构造方法 如果父 类中没有无参构造 则可以通过 super 指定调用父类中的其他构造方法 注意 注意 一个类只可以继承一个抽象类 属于单继承 3 2 接口 接口 接口定义 接口定义 只包含抽象方法和全局常量的类称为接口 接口使用 interface 进行定义 interface A public static final String INFO HELLO public abstract void print 接口定义完之后 一个接口也必须依靠其子类使用 子类继承接口的概念 称为实现 格式如下 class 子类 implements 接口名称 接口的子类如果不是抽象类的话 则也必须覆写里面的全部抽象方法 interface A public static final String INFO HELLO public abstract void print class B implements A public void print System out println INFO public class Demo04 public static void main String args B b new B b print 接口与抽象类相比 有一个优点 说一个子类只能继承一个父类 但是可 以同时实现多个接口 也就说是通过接口完成多继承 class 子类 implements 接口 A 接口 B interface A public static final String INFO HELLO public abstract void print interface C public static final String PARAM WWW public abstract void fun class B implements A C public void print System out println INFO public void fun System out println PARAM public class Demo05 public static void main String args B b new B b print b fun 问题 问题 既然 接口中的一切方法都是抽象方法 接口中的一切变量都是全局常量 那么实际上接口就可以简化成如下的形式定义 interface A public static final String INFO HELLO String INFO HELLO public abstract void print void print 此处虽然没有明确的写出权限 但实际上权限是 public 一定要明确 接口中的一切方法都是 public 访问权限 所以在子类实现方 法的时候访问权限必须是 public 写与不写是一样的 所以有时候为了避免此 种情况 还是建议写上 public public void print 那么如果一个类继承继承一个抽象类又要实现一个接口 则必须按照以下 格式完成 class 子类 extends 父类 一般都是抽象类 implements 接口 A 接 口 B interface A public static final String INFO HELLO String INFO HELLO public abstract void print void print abstract class X public String param hello abstract void fun class B extends X implements A public void print System out println INFO void fun System out println INFO System out println param public class Demo07 public static void main String args B b new B b print 开发原则 开发原则 在开发中一定要记住 一个类往往很少去继承一个已经实现好的类 即 普通类之间不能互相继承 注意点 注意点 1 一个抽象类可以实现多个接口 但是一个接口不能继承一个抽象类 interface A public static final String INFO HELLO String INFO HELLO public abstract void print void print abstract class X implements A public String param hello abstract void fun 2 一个接口可以同时继承多个接口 即 实现多继承关系 interface 子接口 extends 父接口 A 父接口 B 父接口 C interface A public void printA interfa

温馨提示

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

评论

0/150

提交评论