欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    Java程序设计基础-第6章类的继承、抽象类、接口.ppt

    • 资源ID:6509974       资源大小:478KB        全文页数:56页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java程序设计基础-第6章类的继承、抽象类、接口.ppt

    ,主讲:周清,JAVA程序设计基础,TEL:18626624236,第六章 类的继承、抽象类与接口,3,通过本章的学习,主要掌握以下知识点:类的继承 子类的创建 调用父类中特定的构造方法 在子类中访问父类的成员 覆盖 抽象类 接口 内部类与匿名类 包,4,本章的重点:类的继承 覆盖 抽象类 接口本章的难点:内部类与匿名类,5,类的继承,理解继承是理解面向对象程序设计的关键。在Java中,通过关键字extends继承一个已有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类)。在Java中,不允许多继承。,6,6.1 类的继承,通过继承可以实现代码的复用。父类或超类(superclass)被继承的类子类(subclass)由继承而得到的类一个父类可以同时拥有多个子类,但由于Java中不支持多重继承,所以一个类只能有一个直接父类。,7,在Java语言中有一个称为的特殊类,所有的类都是直接或间接地继承该类而得到的。,8,格式:class SubClass extends SuperClass把SubClass声明为类SuperClass的直接子类,如果SuperClass又是某个类的子类,则SubClass同时也是该类的间接子类。,6.1.1 子类的创建,9,如果没有extends关键字,则该类默认为类的子类。因此,在Java中所有的类都是通过直接或间接地继承类得到的。所以在此之前的所有例子均是类的子类。,10,1.子类的构建方法【例6.1】类的继承,/app6_1.java 继承的简单例子class Person/Person类是类的子类 private String name;/name表示姓名 private int age;/age表示年龄 public Person()/定义无参构造方法 System.out.println(“调用了个人构造方法Person()”);public void SetNameAge(String name,int age)this.name=name;this.age=age;,11,public void show()System.out.println(“姓名:“+name+”年龄:”+age);class Student extends Person/定义Student类,继承自Person类 private String department;public Student()/Student的构造方法 System.out.println(“调用了学生构造方法Student()”);,12,public void SetDepartment(String dep)department=dep;System.out.println(“我是”+department+”的学生”);public class app8_1/主类 public static void main(String args)Student stu=new Student();/创建Student对象 stu.SetNameAge(“张小三”,21);/调用父类的SetNameAge()方法 stu.show();/调用父类的show()方法 stu.SetDepartment(“计算机系”);/调用子类的SetDepartment方法,13,程序执行的结果为:调用了个人构造方法Person()调用了学生构造方法Student()姓名:张小三 年龄:21我是计算机的学生,14,说明:(1)通过extends关键字,可将父类的成员继承给子类。(2)Java在执行子类的构造方法之前,会先自动调用父类中没有参数的构造方法,其目的是为了帮助继承自父类的成员做初始化的操作。(3)在严格意义上说,构造方法是不能被继承的,例如父Person有一个构造方法Person(String,int),不能说子类Student也自动有一个构造方法Person(String,int),但这并不意味着子类不能调用父类的构造方法。,15,2.调用父类中特定的构造方法,【例6.2】调用父类中某指定的构造方法。,/app6_2.java 调用父类中的特定构造方法class Person/定义Person private String name;private int age;public Person()/定义无参构造方法 System.out.println(“调用了Person的无参构造方法”);public Person(String name,int age)/定义有参构造方法System.out.println(“调用了Person的有参构造方法”);this.name=name;this.age=age;,16,public void show()System.out.println(“姓名:“+name+”年龄:”+age);class Student extends Person/定义继承自Person类的子类 Student private String department;public Student()/Student的无参构造方法System.out.println(“调用了学生的无参构造方法Student()”);,17,public Student(String name,int age,String dep)/定义Student的有参构造 方法 super(name,age);/调用父类的有参构造方法,在第10行定义的 department=dep;System.out.println(“我是”+department+”的学生”);System.out.println(“调用了学生的有参构造方法Student(String dep)”);public class app6_2/主类 public static void main(String args)Student stu1=new Student();/创建对象,并调用无参构造方法 Student stu2=new Student(“李小四”,23,”信息系”);/并调用有参构造方 法 stu1.show();stu2.show();,18,程序运行结果如下:调用了Person的无参构造方法调用了学生的无参构造方法Student()调用了Person的有参构造方法我是信息系的学生调用了学生的有参构造方法Student(String dep)姓名:null 年龄:0姓名:李小四 年龄:23,19,6.1.2 在子类中访问父类的成员,格式:super.super.,20,1/app6_3.java 用protected修饰符和super关键字访问父类的成员2class Person/定义Person34 protected String name;5 protected int age;6 public Person()/定义“不做事”的无参构造方法7public Person(String name,int age)/定义有参构造方法89 this.name=name;10 this.age=age;1112protected void show()1314 System.out.println(“姓名:“+name+”年龄:”+age);1516,【例8.3】在子类中访问父类的成员。,21,17class Student extends Person/定义子类Student,其父类为Person1819 private String department;20 int age=20;/新添加了一个与父类的成员变量age同名的成员变量21 public Student(String xm,String dep)/定义Student的有参构造方法22 23 name=xm;/在子类里直接访问父类的protected成员24 department=dep;25 super.age=25;/利用super关键字将父类的成员变量age赋值为2526 System.out.println(“子类Student中的成员变量age=”+age);27 super.show();/去掉super而只写show()亦可28 System.out.println(“系别:”+department);2930,31public class app8_3/主类3233 public static void main(String args)34 35 Student stu=new Student(“李小四”,”信息系”);36 37,22,程序执行结果为:子类Student中的成员变量age=20姓名:李小四 年龄:25系别:信息系,23,6.1.3 覆盖,覆盖(Overriding)是指在子类中定义名称、参数个数与类型均与父类相同的方法,用以重写父类里同名方法的功能。,24,1.覆盖父类的方法,子类在重新定义父类已有的方法时,应保持与父类完全相同的方法头声明,即应与父类有完全相同的方法名、返回值和参数类型列表。,25,例 6.4 以个人类Person为父类,创建学生子类Student,并用子类方法覆盖父类方法。,/app6_4.java 方法的覆盖class Person/定义Person protected String name;protected int age;public Person(String name,int age)/定义构造方法 this.name=name;this.age=age;public void show()System.out.println(“姓名:“+name+”年龄:”+age);,26,class Student extends Person/定义子类Student,其父类为Person private String department;public Student(String name,int age,String dep)/定义构造方法 super(name,age);department=dep;public void show()/覆盖父类Person中的的同名方法 System.out.println(“系别:”+department);,27,public class app6_4 public static void main(String args)Student stu=new Student(“王老五”,24,”电子”);stu.show();,28,2.用父类的变量访问子类的成员,通过父类对象也可以访问子类成员。,29,【例6.5】利用父类对象调用子类中成员。,1/app6_5.java 通过父类的对象来调用子类的成员2 class Person/定义Person3 4 protected String name;5 protected int age;6 public Person(String name,int age)/定义构造方法7 8 this.name=name;9 this.age=age;10 11 public void show()12 13 System.out.println(“姓名:“+name+”年龄:”+age);14 15,30,16 class Student extends Person/定义子类Student,其父类为Person17 18 private String department;19 public Student(String name,int age,String dep)/定义构造方法20 21 super(name,age);22 department=dep;23 24 public void show()25 26 System.out.println(“系别:”+department);27 28 public void subshow()29 30 System.out.println(“我在子类中”);31 32,31,33public class app6_5/主类3435 public static void main(String args)36 37 Person per=new Student(“王老五”,24,”电子”);/声明父类变量per指向对象38 per.show();/利用父类对象per调用show()方法39/per.subshow();40 41,程序执行结果为:系别:电子,32,6.1.4 不可被继承的成员与最终类,如果父类的成员不希望被子类的成员所覆盖可以将它们声明为final。如果用final来修饰成员变量,则说明该成员变量是最终变量,即常量,程序中的其他部分可以访问,但不能修改。,33,6.1.5 Object类,在Java语言中有一个特殊类Object,该类是java.lang类库里的一个类,所有的类都是直接或间接地继承该类而得到的。,34,表6.1 Object类常用的方法,35,6.2 抽象类,在Java中可以创建专门的类来做为父类,这种类被称为“抽象类”(Abstract class)。抽象类有点类似“模板”的作用,其目的是根据它的格式来创建和修改新的类。,36,6.2.1 抽象类与抽象方法,定义抽象类的语法格式如下:abstract class 类名 声明成员变量;返回值的数据类型 方法名(参数表)abstract返回值的数据类型 方法名(参数表);,37,6.2.2 抽象类的应用,由于抽象类的目的是要根据它的格式来创建新的类,所以抽象类里的抽象方法并没有定义处理数据的方法体,而是要保留给由抽象类派生出的新类来定义。,38,6.3 接口,接口(Interface)是Java所提供的另一种重要功能,它的结构与抽象类非常相似。接口本身也具有数据成员与抽象方法。,39,6.3.1 接口的定义,接口定义的语法格式如下:public interface 接口名称 extends 父接口名列表publicstaticfinal 数据类型 成员变量名=常量;publicabstract 返回值的数据类型 方法名(参数表);,40,6.3.2 接口的实现与引用,在声明一个类的同时用关键字implements来实现一个接口。接口实现的语法格式为:class 类名称 implements 接口名表,41,一个类要实现一个接口时,应注意以下问题:(1)非抽象类中不能存在抽象方法。(2)一个类在实现某接口的抽象方法时,必须使用完全相同的方法头。(3)接口中抽象方法的访问控制修饰符都已指定为public,所以类在实现方法时,必须显示地使用public修饰符。,42,6.3.3 接口的继承,与类相似,接口也有继承性。定义一个接口时可通过extends关键字声明该新接口是某个已存在的父接口的派生接口,它将继承父接口的所有变量与方法。与类的继承不同的是,一个接口可以有一个以上的父接口,它们之间用逗号分隔,形成父接口列表。,43,6.3.4 利用接口实现类的多重继承,所谓多重继承,是指一个子类可以有一个以上的直接父类,该子类可以继承它所有直接父类的成员。Java虽不支持多重继承,但可利用接口来实现比多重继承更强的功能。一个类实现多个接口时,在implements子句中用逗号分隔。,44,6.4 内部类与匿名类,内部类(Inner Class)是定义在类中的类,内部类的主要作用是将逻辑上相关的类放到一起;而匿名类(Anonymous Class)是一种特殊的内部类,它没有类名,在定义类的同时,就生成该类的一个实例,由于不会在其他地方用到该类,所以不用取名字。,45,6.4.1 内部类,内部类是包含在类中的类,所以内部类也称为“嵌套类”,包含内部类的类又称为“外部类”。其实内部类可以看作是外部类的一个成员,所以内部类也称为“成员类”。,46,/Group.java 内部类与外部类的访问规则内部类外部类public class Group private int age;/声明外部类的私有成员变量 public class Student/声明内部类 String name;/声明内部类的成员变量 public Student(String n,int a)/定义内部类的构造方法 name=n;/访问内部类的成员变量name age=a;/访问外部类的成员变量age public void output()/内部类的成员方法 System.out.println(“姓名:”+this.name+”;年龄:”+age);,【例6.14】内部类与外部类的访问规则。,47,public void output()/定义外部类的成员方法 Student stu=new Student(“刘 洋”,24);/创建内部类对象stu stu.output();/通过stu调用内部类的成员方法 public static void main(String args)Group G=new Group();G.output();,程序运行结果如下:姓名:刘 洋;年龄:24,48,6.4.2 匿名内部类,匿名内部类(anonymous inner class),是指可以利用内部类创建没有名称的对象,并利用它访问到类里的成员。,49,创建匿名内部类并访问成员的语法格式如下:(/创建匿名内部类,并执行所定义的方法 new 类名()/括号“()”内不允许有参数 方法名(参数1,参数2,参数n)方法体语句;).方法名(参数1,参数2,参数n);,50,6.5 包,java中引如了包(package)的概念来管理类名空间。就像文件夹把各种文件组织在一起,使硬盘更清晰、有条理一样,Java中的包把各种类组织在一起,使得程序功能清楚、结构分明。,51,6.5.1 包的概念,包就是Java提供的一种区别类名空间的机制,是类的组织方式,包对应一个文件夹,包中还可以再有包,称为包等级。,52,6.5.2 使用package语句创建包,格式:package 包名1.包名2.包名3;,53,6.5.3 Java中的常用包,Java的常用包有:,54,6.5.4 利用import语句引用Java定义的包,如果要使用Java包中的类,必须在源程序中用import语句导入所需要的类。import语句格式:import.|*其中import是关键字,.表示包的层次,与package语句相同,它对应于文件夹。,55,6.6 Java的垃圾回收,垃圾回收(Garbage-collection)是Java提供的一种自动内存回收功能,可以让程序员减轻许多内存管理的负担,也减少程序员犯错的机会。,Thank You!,

    注意事项

    本文(Java程序设计基础-第6章类的继承、抽象类、接口.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开