Java程序设计基础-第6章类的继承、抽象类、接口.ppt
《Java程序设计基础-第6章类的继承、抽象类、接口.ppt》由会员分享,可在线阅读,更多相关《Java程序设计基础-第6章类的继承、抽象类、接口.ppt(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、主讲主讲:周清周清JAVA程序设计基础程序设计基础TEL:18626624236第六章第六章 类的继承、抽象类与接口类的继承、抽象类与接口3通过本章的学习,主要掌握以下知识点:通过本章的学习,主要掌握以下知识点:类的继承类的继承子类的创建子类的创建调用父类中特定的构造方法调用父类中特定的构造方法在子类中访问父类的成员在子类中访问父类的成员覆盖覆盖抽象类抽象类接口接口内部类与匿名类内部类与匿名类包包4本章的重点:本章的重点:类的继承类的继承覆盖覆盖抽象类抽象类接口接口本章的难点:本章的难点:内部类与匿名类内部类与匿名类5类的继承类的继承v理解继承是理解面向对象程序设计的关键。理解继承是理解面向对
2、象程序设计的关键。v在在Java中,通过关键字中,通过关键字extends继承一个已继承一个已有的类,被继承的类称为父类(超类,基类),有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类)。新的类称为子类(派生类)。v在在Java中,不允许多继承。中,不允许多继承。66.1 6.1 类的继承类的继承通过继承可以实现代码的复用。通过继承可以实现代码的复用。v父类或超类父类或超类(superclass)(superclass)被继承的类被继承的类v子类(子类(subclasssubclass)由继承而得到的类由继承而得到的类一一个个父父类类可可以以同同时时拥拥有有多多个个子子类类,但
3、但由由于于JavaJava中中不不支支持持多多重重继继承承,所所以以一一个个类类只只能能有有一一个个直直接接父父类。类。7在在JavaJava语语言言中中有有一一个个称称为为java.lang.Objectjava.lang.Object的的特特殊殊类类,所所有有的的类类都都是是直直接接或或间间接接地地继继承承该该类类而而得得到到的。的。8格式:格式:class SubClass class SubClass extendsextends SuperClass SuperClass 把把SubClassSubClass声明为类声明为类SuperClassSuperClass的直接子类,如的直接
4、子类,如果果SuperClassSuperClass又是某个类的子类,则又是某个类的子类,则SubClassSubClass同时也同时也是该类的间接子类。是该类的间接子类。6.1.1 6.1.1 子类的创建子类的创建9如果没有如果没有extendsextends关键字,则该类默认为关键字,则该类默认为java.lang.Objectjava.lang.Object类的子类。因此,在类的子类。因此,在JavaJava中中所有的类都是通过直接或间接地继承所有的类都是通过直接或间接地继承java.lang.Objectjava.lang.Object类得到的。所以在此之前的类得到的。所以在此之前的所
5、有例子均是所有例子均是java.lang.Objectjava.lang.Object类的子类。类的子类。101.子类的构建方法【例例6.16.1】类的继承类的继承/app6_1.java 继承的简单例子class Person /Person类是java.lang.Object类的子类 private String name;/name表示姓名 private int age;/age表示年龄 public Person()/定义无参构造方法 System.out.println(“调用了个人构造方法Person()”);public void SetNameAge(String name,
6、int age)this.name=name;this.age=age;11public void show()System.out.println(“姓名:“+name+”年龄:”+age);class Student extends Person /定义Student类,继承自Person类 private String department;public Student()/Student的构造方法 System.out.println(“调用了学生构造方法Student()”);12public void SetDepartment(String dep)department=dep;
7、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()调用了学生构造方法St
8、udent()姓名:张小三 年龄:21我是计算机的学生14说明说明:(1)(1)通过通过extendsextends关键字,可将父类的成员继承给关键字,可将父类的成员继承给子类。子类。(2)Java(2)Java在执行子类的构造方法之前,会先自动调在执行子类的构造方法之前,会先自动调用父类中没有参数的构造方法,其目的是为了帮助继用父类中没有参数的构造方法,其目的是为了帮助继承自父类的成员做初始化的操作。承自父类的成员做初始化的操作。(3)(3)在严格意义上说,构造方法是不能被继承的,在严格意义上说,构造方法是不能被继承的,例如父例如父PersonPerson有一个构造方法有一个构造方法Pers
9、on(String,int)Person(String,int),不能说子类不能说子类StudentStudent也自动有一个构造方法也自动有一个构造方法Person(String,int)Person(String,int),但这并不意味着子类不能调用,但这并不意味着子类不能调用父类的构造方法。父类的构造方法。152.调用父类中特定的构造方法【例例6.2】调用父类中某指定的构造方法。调用父类中某指定的构造方法。/app6_2.java调用父类中的特定构造方法调用父类中的特定构造方法classPerson/定义定义PersonprivateStringname;privateintage;pu
10、blicPerson()/定义无参构造方法定义无参构造方法System.out.println(“调用了调用了Person的无参构造方法的无参构造方法”);publicPerson(Stringname,intage)/定义有参构造方法定义有参构造方法System.out.println(“调用了调用了Person的有参构造方法的有参构造方法”);this.name=name;this.age=age;16publicvoidshow()System.out.println(“姓名:姓名:“+name+”年龄:年龄:”+age);classStudentextendsPerson/定义继承自定
11、义继承自Person类的子类类的子类StudentprivateStringdepartment;publicStudent()/Student的无参构造方法的无参构造方法System.out.println(“调用了学生的无参构造方法调用了学生的无参构造方法Student()”);17publicStudent(Stringname,intage,Stringdep)/定义定义Student的有参构造的有参构造方法方法super(name,age);/调用父类的有参构造方法,在第调用父类的有参构造方法,在第10行定义的行定义的department=dep;System.out.println
12、(“我是我是”+department+”的学生的学生”);System.out.println(“调用了学生的有参构造方法调用了学生的有参构造方法Student(Stringdep)”);publicclassapp6_2/主类主类publicstaticvoidmain(Stringargs)Studentstu1=newStudent();/创建对象,并调用无参构造方法创建对象,并调用无参构造方法Studentstu2=newStudent(“李小四李小四”,23,”信息系信息系”);/并调用有参构造方并调用有参构造方法法stu1.show();stu2.show();18程序运行结果如下
13、:程序运行结果如下:调用了调用了Person的无参构造方法的无参构造方法调用了学生的无参构造方法调用了学生的无参构造方法Student()调用了调用了Person的有参构造方法的有参构造方法我是信息系的学生我是信息系的学生调用了学生的有参构造方法调用了学生的有参构造方法Student(Stringdep)姓名:姓名:null年龄:年龄:0姓名:李小四姓名:李小四年龄:年龄:23196.1.2 6.1.2 在子类中访问父类的成员在子类中访问父类的成员格式:super.super.201/app6_3.java用用protected修饰符和修饰符和super关键字访问父类的成员关键字访问父类的成员
14、2classPerson/定义定义Person34protectedStringname;5protectedintage;6publicPerson()/定义定义“不做事不做事”的无参构造方法的无参构造方法7publicPerson(Stringname,intage)/定义有参构造方法定义有参构造方法89this.name=name;10this.age=age;1112protectedvoidshow()1314System.out.println(“姓名:姓名:“+name+”年龄:年龄:”+age);1516【例例8.38.3】在子类中访问父类的成员。在子类中访问父类的成员。211
15、7classStudentextendsPerson/定义子类定义子类Student,其父类为,其父类为Person1819privateStringdepartment;20intage=20;/新添加了一个与父类的成员变量新添加了一个与父类的成员变量age同名的成员变量同名的成员变量21publicStudent(Stringxm,Stringdep)/定义定义Student的有参构造方法的有参构造方法2223name=xm;/在子类里直接访问父类的在子类里直接访问父类的protected成员成员24department=dep;25super.age=25;/利用利用super关键字将父
16、类的成员变量关键字将父类的成员变量age赋值为赋值为2526System.out.println(“子类子类Student中的成员变量中的成员变量age=”+age);27super.show();/去掉去掉super而只写而只写show()亦可亦可28System.out.println(“系别:系别:”+department);293031publicclassapp8_3/主类主类3233publicstaticvoidmain(Stringargs)3435Studentstu=newStudent(“李小四李小四”,”信息系信息系”);363722程序执行结果为:程序执行结果为:子类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 基础 继承 抽象 接口
限制150内