Java基础教程面向对象下.ppt
《Java基础教程面向对象下.ppt》由会员分享,可在线阅读,更多相关《Java基础教程面向对象下.ppt(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java基础教程主讲老师:第四讲 面向对象(下)类的继承 n n通过继承可以简化类的定义通过继承可以简化类的定义 。n nJavaJava只支持单继承,不允许多重继承。只支持单继承,不允许多重继承。n n可以有多层继承,即一个类可以继承某一个类的子类,如可以有多层继承,即一个类可以继承某一个类的子类,如类类B B继承了类继承了类A A,类,类C C又可以继承类又可以继承类B B,那么类,那么类C C也间接继承也间接继承了类了类A A。n n子类继承父类所有的成员变量和成员方法,但不继承父类子类继承父类所有的成员变量和成员方法,但不继承父类的构造方法。在子类的构造方法中可使用语句的构造方法。在子
2、类的构造方法中可使用语句super(super(参数列参数列表表)调用父类的构造方法。调用父类的构造方法。n n如果子类的构造方法中没有显式地调用父类构造方法,也如果子类的构造方法中没有显式地调用父类构造方法,也没有使用没有使用thisthis关键字调用重载的其它构造方法,则在产生子关键字调用重载的其它构造方法,则在产生子类的实例对象时,系统默认调用父类无参数的构造方法。类的实例对象时,系统默认调用父类无参数的构造方法。总之都会调用父类的构造函数总之都会调用父类的构造函数n n一个类没有声明构造函数的时候,编译器会自动添加一个一个类没有声明构造函数的时候,编译器会自动添加一个不带参数的构造函数
3、;一旦声明了任意一个构造函数则就不带参数的构造函数;一旦声明了任意一个构造函数则就不添加了。不添加了。子类对象的实例化过程 n n分配成员变量的存储空间并进行默认的初始化,就是用分配成员变量的存储空间并进行默认的初始化,就是用newnew关键字关键字产生对象后,对类中的成员变量按第三章的表产生对象后,对类中的成员变量按第三章的表3.13.1中的对应关系对对中的对应关系对对象中的成员变量进行初始化赋值。象中的成员变量进行初始化赋值。n n绑定构造方法参数,就是绑定构造方法参数,就是new Personnew Person(实际参数列表(实际参数列表)中所传递进中所传递进的参数赋值给构造方法中的形
4、式参数变量。的参数赋值给构造方法中的形式参数变量。n n 如有如有this()this()调用,则调用相应的重载构造方法(被调用的重载构造方调用,则调用相应的重载构造方法(被调用的重载构造方法又从步骤法又从步骤2 2开始执行这些流程),被调用的重载构造方法的执行流开始执行这些流程),被调用的重载构造方法的执行流程结束后,回到当前构造方法,当前构造方法直接跳转到步骤程结束后,回到当前构造方法,当前构造方法直接跳转到步骤6 6执行执行n n显式或隐式追溯调用父类的构造方法显式或隐式追溯调用父类的构造方法(一直到一直到ObjectObject类为止,类为止,ObjectObject是所有是所有Jav
5、aJava类的最顶层父类,在本章后面部分有详细讲解类的最顶层父类,在本章后面部分有详细讲解),父类的,父类的构造方法又从步骤构造方法又从步骤2 2开始对父类执行这些流程,父类的构造方法的执开始对父类执行这些流程,父类的构造方法的执行流程结束后,回到当前构造方法,当前构造方法继续往下执行。行流程结束后,回到当前构造方法,当前构造方法继续往下执行。n n 进行实例变量的显式初始化操作,也就是执行在定义成员变量时就进行实例变量的显式初始化操作,也就是执行在定义成员变量时就对其进行赋值的语句,如:对其进行赋值的语句,如:n n执行当前构造方法的方法体中的程序代码执行当前构造方法的方法体中的程序代码 子
6、类对象的实例化过程思考:1).为什么super()和this()调用语句不能同时在一个构造函数中出现?2).为什么super()或this()调用语句只能作为构造函数中的第一句出现?覆盖父类的方法 n n覆盖方法必须和被覆盖方法具有相同的方法名称、覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表和返回值类型。参数列表和返回值类型。n n如果在子类中想调用父类中的那个被覆盖的方法,如果在子类中想调用父类中的那个被覆盖的方法,我们可以用我们可以用super.super.方法的格式方法的格式 。n n覆盖方法时,不能使用比父类中被覆盖的方法更覆盖方法时,不能使用比父类中被覆盖的方法更严格的访问权
7、限严格的访问权限 。final关键字 n n在在JavaJava中声明类、属性和方法时,可使用关键字中声明类、属性和方法时,可使用关键字finalfinal来修饰。来修饰。n nfinalfinal标记的类不能被继承。标记的类不能被继承。n nfinalfinal标记的方法不能被子类重写。标记的方法不能被子类重写。n nfinalfinal标记的变量标记的变量(成员变量或局部变量成员变量或局部变量)即成为常量,即成为常量,只能赋值一次。只能赋值一次。n n方法中定义的内置类只能访问该方法内的方法中定义的内置类只能访问该方法内的finalfinal类型的类型的局部变量,用局部变量,用finalf
8、inal定义的局部变量相当于是一个常量,定义的局部变量相当于是一个常量,它的生命周期超出方法运行的生命周期,将一个形参它的生命周期超出方法运行的生命周期,将一个形参定义成定义成finalfinal也是可以的,这就限定了我们在方法中修也是可以的,这就限定了我们在方法中修改形式参数的值。改形式参数的值。n npublic static finalpublic static final共同标记常量时,这个常量就成了共同标记常量时,这个常量就成了全局的常量。全局的常量。抽象类 javajava中可以定义一些不含方法体的方法,它的方法体中可以定义一些不含方法体的方法,它的方法体的实现交给该类的子类根据自
9、己的情况去实现,的实现交给该类的子类根据自己的情况去实现,这样的方法就是抽象方法,包含抽象方法的类就这样的方法就是抽象方法,包含抽象方法的类就叫抽象类。叫抽象类。抽象类必须用抽象类必须用abstractabstract关键字来修饰;抽象方法也必须关键字来修饰;抽象方法也必须用用abstractabstract来修饰。来修饰。抽象类不能被实例化,也就是不能用抽象类不能被实例化,也就是不能用newnew关键字去产生关键字去产生对象。对象。抽象方法只需声明,而不需实现。抽象方法只需声明,而不需实现。含有抽象方法的类必须被声明为抽象类,抽象类的子类含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆
10、盖所有的抽象方法后才能被实例化,否则这个子必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。类还是个抽象类。接口(interface)如果一个抽象类中的所有方法都是抽象的,我们就可以如果一个抽象类中的所有方法都是抽象的,我们就可以将这个类用另外一种方式来定义,也就是接口定义。将这个类用另外一种方式来定义,也就是接口定义。接口是抽象方法和常量值的定义的集合,从本质上讲,接口是抽象方法和常量值的定义的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。和方法的定义,而没有变量和方法的实现。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 基础教程 面向 对象
限制150内