第七章 面向对象高级特性
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在Java定义一个类时,让该类通过关键字extends继承一个已有的 类,这就是类的继承 被继承的类称为父类(超类,基类),新的类称为子类(派生 类). 子类继承父类的所有属性和方法,同时也可以增加自己的属性和 方法.
使用 继承
类的继承
继承的语法
示例
Employee.java
Worker.java
接 口(interface)
接口与抽象类的区别
接口不能含有任何非抽象方法,而抽象类可以. 类可以实现许多接口,但只能有一个父类.
接 口(interface)
类实现接口 练习 Student.java Consumer.java Person.java
创建一个Student类 该类继承了Person类,并实现了Consumer接口 该类具有String类型的属性school 并有一个study方法,在该方法中,系统可打印出学生在那所学校 学习 并创建一个测试方法,测试Student类
修饰符 class 子类名 extends 父类名
类的继承
继承的语法 练习 Officer.java TestOfficer.java
用java中 类 的 继 承 机 制,实现Officer类,并设计一个测试程序 TestOfficer类,来访问Officer类
继承的好处 减少代码的书写 易维护
类的继承
继承的规则
Java中只支持单继承,也就是说每个类只能有一个父类,不允许 有多重继承 一个父类可以有多个子类 子类继承父类所有的属性和方法,但不继承父类的构造方法
示例
Officer.java
类的继承
子类的构造方法 — 子类不能继承父类的构造方法
使用默认的构造方法 在子类中的创建构造方法 示例 Worker.java
接 口(interface)
抽象类
抽象类是抽象方法和非抽象方法的集合
访问权限修饰符 abstract class 类名 { …… }
特殊情况 全部是抽象方法 全部为非抽象方法
class A class A { { String name; String name; abstract int method1(int a, int b) abstract int method1(int a, int b) ; ; void sayHi( ){ void sayHi( ){ System.out.println("Hello!"); System.out.println("Hello!"); }}
时间:8.0 学时 教学方法:讲授ppt +
上机练习
本章要点
类的继承
继承的规则 子类的构造方法 方法的覆盖 final关键字
接口
接口的规范 引用数据类型的转换 多态
Java中的包
包和访问权限修饰符 包装类和内部类
Contents
1 2 3 4
类的继承
接口
Java中的包
包装类和内部类
类的继承
类的继承
implements
class class
class class
class A extends B implements C, D { }
class A extends B implements C { }
class class
extends
interface interface
implements
接 口(interface)
引用数据类型的转换
向上转型(Upcasting)— 子类转换为父类,自动转换; 前提 — 具有继承关系 原则 — 子类就是父类
接 口(interface)
引用数据类型的转换
向下转型(Downcasting):强制转换 曾经向上转换过的对象,才能再向下转换. 向上转换损失了子类新扩展的属性和方法 仅剩下父类中声明过的属性和方法
Contents
1 2 3 4
类的继承
接口
Java中的包
包装类和内部类
接 口(interface)
抽象方法
只有方法声明,没有方法实现的方法
访问权限修饰符 abstract 返回值类型 抽象方法名 (参数列表) ;
class A class A { { abstract int method1(int a, int b) abstract int method1(int a, int b) ; ; }}
接 口(interface)
class A extends B { } class A implements C { } class A implements C, D { }
class class
extends
interface interface
implements
interface interface
接 口(interface)
interface A extends B { }
interface A extends B, C, D { }
interface interface
extends
interface inter源自文库ace
extends
interface interface
extends
interface interface
接口的规范
接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定 义,而没有变量和方法的实现
访问权限修饰符 interface 接口名 { …… }
接 口(interface)
接口的规范
interface Runner interface Runner { { public abstract void run(); public abstract void run(); void breathe(); void breathe(); }}
Animal = new Cat( ); Animal aa= new Cat( ); Cat = (Cat)p; Cat cc= (Cat)p;
接 口(interface)
instanceof 运算符
判断一个类是否实现了某个接口
对象 instanceof 接口
判断一个实例对象是否属于一个类
对象 instanceof 类
abstract class A extends B { }
abstract class abstract class
extends
interface interface
implements
interface interface
implements
abstract class abstract class
课时(H)
1.5 0.5 1.5 2.0 1.5 4.5 8.0 1.5 3.0
课程结构
内容
第十章:集合 第十一章:文件与流
课时(H)
3.0 3.0
第八章:面向对象高级特性
目标: 介绍Java中类的继承,封装, 多态,方法的重载与覆盖.抽象类 及接口的概念与使用.Java中的包 及类路径.引用数据类型的转换. 包装类及内部类.访问权限修饰符 的使用. final关键字.
接 口(interface)
练习 Animal.java
按下面的类图,创建一个抽象类,该抽象类有 字符串类型的eyecolor属性 抽象方法stayIn,返回值类型为void 方法showEye,返回值类型String
Animal
eyecolor stayIn() showEye()
接 口(interface)
接 口(interface)
抽象类
注意: 抽象类不能被实例化; 其包含的抽象方法必须在其子类中被实现,否则该子类只能声 明为abstract; 抽象方法不能为static; 抽象类不能被实例化,所以不需有构造方法 在下列情况下,一个类必须声明为抽象类: 当一个类的一个或多个方法是抽象方法时; 当类是一个抽象类的子类,并且没有实现父类的所有抽象方 法,即只实现部分; 当一个类实现一个接口,并且不能为全部抽象方法都提供实现 时;
类的继承
练习
给定类
class A class A { { int method1(int a, double b) return 0; int method1(int a, double b) { {return 0; } }
,在其子类中
下列哪些覆盖方法可以正确的声明_____
A. int method1(int a, double b) { return 1; } B. int method1(int a, long b) { return 1; } C. int method1(int b,double a){return 1;} D. short method1(int a, double b) { return 1: } E. int method1(double b, int a) { return 1; }
在子类中创建构造方法时,必须调用父类的构造方法 子类可以在自己的构造方法中使用super关键字来调用父类的构 造方法
super (参数1,参数2,…);
如果使用super关键字调用父类构造方法,必须写在该子类构造 方法的第一行 如调用的是父类中无参的构造方法,则可以不写super( ) 如果子类中调用了父类无参的构造方法,而父类中没有无参构 造方法则系统编译出错
JAVA编程基础 —— 面向对象高级特性
东软人才实训中心
3 Sept. 2008 Neusoft Confidential
课程结构
内容
第一章:认识JAVA 第二章:JAVA虚拟机简介 第三章:变量和运算符 第四章:流程控制语句 第五章:数组 第六章:面向对象基础 第七章:面向对象高级特性 第八章:异常处理 第九章:工具类
注意:
接口不是一个类,没有构造方法,不能实例化 接口使用interface关键字来定义,而不是class 接口默认: 常量:public static final 抽象方法: public abstract
接 口(interface)
类实现接口
为了使用一个接口,你要编写实现接口的类 如果一个类要实现一个接口,那么这个类就必须实现接口中所有 抽象方法.否则这个类只能声明为抽象 多个无关的类可以实现一个接口,一个类可以实现多个无关的接 口 一个类可以在继承一个父类的同时,实现一个或多个接口 示例 Runnable.java Bird.java Flyable.java
答案:A C
类的继承
final关键字
final可以修饰的元素: 变量(属性和局部变量):不能被重新赋值
– 在声明的同时赋值
方法:不能被覆盖,即不能修改. 类:不能被继承 示例 Final.java
练习
练习 Shape.java Rect.java Circle.java Square.java TestShape.java 设计一个形状类,方法:求周长和求面积 形状类的子类:Rect(矩形),Circle(圆形) Rect 类的子类:Square(正方形) 不同的子类会有不同的构造方法及计算周长和面积的方法 写一个测试类,在main方法中创建三个不同的形状对象,放 在Shape 类型的数组里,分别打印出每个对象的周长和面积
extends
interface interface
implements
interface interface
implements
class class
abstract class abstract class
abstract class A extends B implements C, D { }
类的继承
练习 Officer.java
在Officer类中,创建一个构造方法,要求在调用该构造方法时, 可以对name,birth,salary属性赋初值
类的继承
方法的覆盖(override)
重写(rewrite) 对从父类中继承来的方法进行改造 在子类继承父类时发生
方法覆盖的规则
在子类中的覆盖方法与父类中被覆盖的方法应具有 相同的方法名 相同的参数列表(参数数量,参数类型,参数顺序都要相同) 相同的返回值类型 子类覆盖方法的访问权限要不小于父类中被覆盖方法的访问权限 示例 Officer.java
interface interface
implements
class class
接 口(interface)
class A extends B { } abstract class A implements C { } abstract class A implements C, D { }
abstract class abstract class
使用 继承
类的继承
继承的语法
示例
Employee.java
Worker.java
接 口(interface)
接口与抽象类的区别
接口不能含有任何非抽象方法,而抽象类可以. 类可以实现许多接口,但只能有一个父类.
接 口(interface)
类实现接口 练习 Student.java Consumer.java Person.java
创建一个Student类 该类继承了Person类,并实现了Consumer接口 该类具有String类型的属性school 并有一个study方法,在该方法中,系统可打印出学生在那所学校 学习 并创建一个测试方法,测试Student类
修饰符 class 子类名 extends 父类名
类的继承
继承的语法 练习 Officer.java TestOfficer.java
用java中 类 的 继 承 机 制,实现Officer类,并设计一个测试程序 TestOfficer类,来访问Officer类
继承的好处 减少代码的书写 易维护
类的继承
继承的规则
Java中只支持单继承,也就是说每个类只能有一个父类,不允许 有多重继承 一个父类可以有多个子类 子类继承父类所有的属性和方法,但不继承父类的构造方法
示例
Officer.java
类的继承
子类的构造方法 — 子类不能继承父类的构造方法
使用默认的构造方法 在子类中的创建构造方法 示例 Worker.java
接 口(interface)
抽象类
抽象类是抽象方法和非抽象方法的集合
访问权限修饰符 abstract class 类名 { …… }
特殊情况 全部是抽象方法 全部为非抽象方法
class A class A { { String name; String name; abstract int method1(int a, int b) abstract int method1(int a, int b) ; ; void sayHi( ){ void sayHi( ){ System.out.println("Hello!"); System.out.println("Hello!"); }}
时间:8.0 学时 教学方法:讲授ppt +
上机练习
本章要点
类的继承
继承的规则 子类的构造方法 方法的覆盖 final关键字
接口
接口的规范 引用数据类型的转换 多态
Java中的包
包和访问权限修饰符 包装类和内部类
Contents
1 2 3 4
类的继承
接口
Java中的包
包装类和内部类
类的继承
类的继承
implements
class class
class class
class A extends B implements C, D { }
class A extends B implements C { }
class class
extends
interface interface
implements
接 口(interface)
引用数据类型的转换
向上转型(Upcasting)— 子类转换为父类,自动转换; 前提 — 具有继承关系 原则 — 子类就是父类
接 口(interface)
引用数据类型的转换
向下转型(Downcasting):强制转换 曾经向上转换过的对象,才能再向下转换. 向上转换损失了子类新扩展的属性和方法 仅剩下父类中声明过的属性和方法
Contents
1 2 3 4
类的继承
接口
Java中的包
包装类和内部类
接 口(interface)
抽象方法
只有方法声明,没有方法实现的方法
访问权限修饰符 abstract 返回值类型 抽象方法名 (参数列表) ;
class A class A { { abstract int method1(int a, int b) abstract int method1(int a, int b) ; ; }}
接 口(interface)
class A extends B { } class A implements C { } class A implements C, D { }
class class
extends
interface interface
implements
interface interface
接 口(interface)
interface A extends B { }
interface A extends B, C, D { }
interface interface
extends
interface inter源自文库ace
extends
interface interface
extends
interface interface
接口的规范
接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定 义,而没有变量和方法的实现
访问权限修饰符 interface 接口名 { …… }
接 口(interface)
接口的规范
interface Runner interface Runner { { public abstract void run(); public abstract void run(); void breathe(); void breathe(); }}
Animal = new Cat( ); Animal aa= new Cat( ); Cat = (Cat)p; Cat cc= (Cat)p;
接 口(interface)
instanceof 运算符
判断一个类是否实现了某个接口
对象 instanceof 接口
判断一个实例对象是否属于一个类
对象 instanceof 类
abstract class A extends B { }
abstract class abstract class
extends
interface interface
implements
interface interface
implements
abstract class abstract class
课时(H)
1.5 0.5 1.5 2.0 1.5 4.5 8.0 1.5 3.0
课程结构
内容
第十章:集合 第十一章:文件与流
课时(H)
3.0 3.0
第八章:面向对象高级特性
目标: 介绍Java中类的继承,封装, 多态,方法的重载与覆盖.抽象类 及接口的概念与使用.Java中的包 及类路径.引用数据类型的转换. 包装类及内部类.访问权限修饰符 的使用. final关键字.
接 口(interface)
练习 Animal.java
按下面的类图,创建一个抽象类,该抽象类有 字符串类型的eyecolor属性 抽象方法stayIn,返回值类型为void 方法showEye,返回值类型String
Animal
eyecolor stayIn() showEye()
接 口(interface)
接 口(interface)
抽象类
注意: 抽象类不能被实例化; 其包含的抽象方法必须在其子类中被实现,否则该子类只能声 明为abstract; 抽象方法不能为static; 抽象类不能被实例化,所以不需有构造方法 在下列情况下,一个类必须声明为抽象类: 当一个类的一个或多个方法是抽象方法时; 当类是一个抽象类的子类,并且没有实现父类的所有抽象方 法,即只实现部分; 当一个类实现一个接口,并且不能为全部抽象方法都提供实现 时;
类的继承
练习
给定类
class A class A { { int method1(int a, double b) return 0; int method1(int a, double b) { {return 0; } }
,在其子类中
下列哪些覆盖方法可以正确的声明_____
A. int method1(int a, double b) { return 1; } B. int method1(int a, long b) { return 1; } C. int method1(int b,double a){return 1;} D. short method1(int a, double b) { return 1: } E. int method1(double b, int a) { return 1; }
在子类中创建构造方法时,必须调用父类的构造方法 子类可以在自己的构造方法中使用super关键字来调用父类的构 造方法
super (参数1,参数2,…);
如果使用super关键字调用父类构造方法,必须写在该子类构造 方法的第一行 如调用的是父类中无参的构造方法,则可以不写super( ) 如果子类中调用了父类无参的构造方法,而父类中没有无参构 造方法则系统编译出错
JAVA编程基础 —— 面向对象高级特性
东软人才实训中心
3 Sept. 2008 Neusoft Confidential
课程结构
内容
第一章:认识JAVA 第二章:JAVA虚拟机简介 第三章:变量和运算符 第四章:流程控制语句 第五章:数组 第六章:面向对象基础 第七章:面向对象高级特性 第八章:异常处理 第九章:工具类
注意:
接口不是一个类,没有构造方法,不能实例化 接口使用interface关键字来定义,而不是class 接口默认: 常量:public static final 抽象方法: public abstract
接 口(interface)
类实现接口
为了使用一个接口,你要编写实现接口的类 如果一个类要实现一个接口,那么这个类就必须实现接口中所有 抽象方法.否则这个类只能声明为抽象 多个无关的类可以实现一个接口,一个类可以实现多个无关的接 口 一个类可以在继承一个父类的同时,实现一个或多个接口 示例 Runnable.java Bird.java Flyable.java
答案:A C
类的继承
final关键字
final可以修饰的元素: 变量(属性和局部变量):不能被重新赋值
– 在声明的同时赋值
方法:不能被覆盖,即不能修改. 类:不能被继承 示例 Final.java
练习
练习 Shape.java Rect.java Circle.java Square.java TestShape.java 设计一个形状类,方法:求周长和求面积 形状类的子类:Rect(矩形),Circle(圆形) Rect 类的子类:Square(正方形) 不同的子类会有不同的构造方法及计算周长和面积的方法 写一个测试类,在main方法中创建三个不同的形状对象,放 在Shape 类型的数组里,分别打印出每个对象的周长和面积
extends
interface interface
implements
interface interface
implements
class class
abstract class abstract class
abstract class A extends B implements C, D { }
类的继承
练习 Officer.java
在Officer类中,创建一个构造方法,要求在调用该构造方法时, 可以对name,birth,salary属性赋初值
类的继承
方法的覆盖(override)
重写(rewrite) 对从父类中继承来的方法进行改造 在子类继承父类时发生
方法覆盖的规则
在子类中的覆盖方法与父类中被覆盖的方法应具有 相同的方法名 相同的参数列表(参数数量,参数类型,参数顺序都要相同) 相同的返回值类型 子类覆盖方法的访问权限要不小于父类中被覆盖方法的访问权限 示例 Officer.java
interface interface
implements
class class
接 口(interface)
class A extends B { } abstract class A implements C { } abstract class A implements C, D { }
abstract class abstract class