第5章 继承与接口

合集下载

Java开发基础PPT课件

Java开发基础PPT课件
运算相关注意事项
使用JDK库实现常用算法及函数 数值类型的自动转换规则 强制类型转换及截位 枚举类型的使用
字符串
字符串
代码点与代码单元 字符子串与拼接 相等的比较
注意事项
编码转换方法 子串下标计算 拼接的性能 String 方法 intern() 的应用
注释
注释
单行注释 多行注释 文档注释
–32,768 to 32,767
–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
1 byte
–128 to 127
Type float double
Storage Requirement 4 bytes
8 bytes
Range
approximately ±3.40282347E+38F (6–7 significant decimal digits)
大纲
☞ 对象构造顺序
方法参数传递:按值调用 类设计基本原则
对象构造顺序
对象构造顺序
类装载时,按类声明中出现的次序执行静态初始化块或静态初始化 语句。
对象构造时: 所有数据域初始化为默认值 按类声明中出现的次序执行初始化块或初始化语句。 如果构造器第一行调用了第二个构造器,则跳转到第二个构造器 中执行,直到返回。 执行这个构造器的主体部分。
Java开发基础
目录
☞ 第1章 Java体系结构
第2章 基本程序结构设计 第3章 对象与类 第4章 继承 第5章 接口与内部类 第6章 事件处理 第7章 异常与调试 第8章 流与文件
Java体系结构
Java体系结构包括如下四大类技术:
Java程序设计语言 Java class文件格式 Java API Java 虚拟机

Java开发基础 PPT课件

Java开发基础 PPT课件

大纲
接口与抽象类的选择
☞ 克隆及其注意事项
接口与回调 内部类、局部类、匿名类 JDK的Proxy与CGLib的动态代理区别
克隆及其注意事项
浅克隆与深克隆
默认实现是浅克隆(本地方法实现)(java.util.AbstractMap默 认实现是浅克隆)
如果原始对象与浅克隆对象共享的子对象是不可变的,则不 会产生负面问题。
反射
允许程序在运行时透过Reflection APIs取得任何一个已知名称的class 的内部信息,并可于运行时改变fields内容或唤起 methods。
可动态获取的内容包括
modifiers(诸如public, static ) superclass(例如Object) interfaces(例如Cloneable fields和methods等
的属性 Java 中所有的对象都继承至 ng.Object ,因此都拥有
toString() , equals() ,wait() 等方法
继承的约束
不能实现多继承 父类提供了参数构造函数,子类必须实现 子类不能降低父类方法的可见域 子类不能抛出比父类构造函数或方法更多的异常 子类不能扩展父类的 final 方法
象类不应该依赖于其细节,细节。 接口隔离原则(ISP):不应该强迫客户依赖于它们不用的方

类设计基本原则(续)
包设计的基本原则
包内聚性原则(包粒度) 重用发布等价原则(REP):重用的粒度就是发布的粒度。 共同重用原则(CRP):一个包中的所有类应该是共同重用的。 如果重用了包中的一个类,那么就要重用包中的所有类。 共同封闭原则(CCP):包中的所有类对于同一类性质的变化应 该是共同封闭的。一个变化若对一个包产生影响,则将对该包中 的所有类产生影响,而对于其它的包不造成任何影响。 考虑可重用性与可开发性的平衡。

第5章 并行接口P0~P3

第5章  并行接口P0~P3
4.1.1.1 PO~P3接口功能
大多数口线都有双重功能,具体介绍如下:
PO口—1.作为输入/输出口。
2.作为地址/数据总线 ,接外围芯片时PO口分时输出低 8 位地址与数据信号。
P1口—作为输入/输出口。
P1.0 T2引脚,定时/计数器2外部计数脉冲输入 P1.1 T2EX引脚,定时/计数器2触发和方向控制 P1.5 MOSI引脚,在系统编程数据输入 P1.6 MISO引脚,在系统编程数据输出 P1.7 SCK引脚,在系统编程时钟输入
这是为了避免错读引脚的电平信号,例如用一根口线去 驱动一个晶体管基极,当向口线写“1”,晶体管导通,导通 的PN结会把引脚的电平拉低,如读引脚数据,则会读为0 , 而实际上原口线的数据为1。因而采用读锁存器Q的值而避免 了错读。究竟是读引脚还是读 锁存器,CPU内部会自行判断 是发读引脚脉冲还是读锁存器脉冲,读者不必在意。
归纳四个并行口使用的注意事项如下:
1.如果单片机内部有程序存贮器,不需要扩展外部存贮器和 I/O接口,单片机的四个口均可作I/O口使用。
2.四个口在作输入口使用时,均应先对其写“1”,以避免误 读。
3.P0口作I/O口使用时应外接10K的上拉电阻,其它口则可不必。 4.P2可某几根线作地址使用时,剩下的线不能作I/O口线使用。 5.P3口的某些口线作第二功能时,剩下的口线可以单独作I/O
内容提要
★单片机的并行接口P0~P3
★ PO~P3端口的功能和内部结构 ★ PO~P3端口的编程 ★ 用并行口设计LED数码显示和键盘电路 ★ 并行接口小结
★MCS-51单片机的中断系统
★ 中断的基本概念 ★ 中断的系统结构 ★ 中断的响应过程 ★ 中断的的应用编程
★小结
I/0接口

第5章 输入、输出接口P0~P3--1讲解

第5章 输入、输出接口P0~P3--1讲解

武汉科技大学
电信系
2. P1口 字节地址90H,位地址90H—97H
P1.0—P1.7: 准双向I/O口 输出时一切照常,输入时要先对其写“1”
读锁存器
内部 总线
写锁 存器
2
DQ CK /Q
1
读引脚
单片机及接口技术
Vcc 内部上拉电阻
引脚P1.X
17
第五章 输入、输出接口P0~P3
武汉科技大学
电信系
P1口
输入数据时,要先对其写“1”
读锁存器
Vcc 内部上拉电阻
内部 总线 1
写锁 存器
2
DQ
1
CK /Q
0
截 引脚P1.X 止
1
读引脚 =1
18
单片机及接口技术
第五章 输入、输出接口P0~P3
武汉科技大学
电信系
P1口
读锁存器
输出数据 1 时
内部 总线 1
写锁 存器
2
DQ
1
CK /Q
0
1
Vcc 内部上拉电阻
1
读引脚 =0
控制=1时,此脚作通用输出口: 输出=1时
23
单片机及接口技术
第五章 输入、输出接口P0~P3
武汉科技大学
电信系
P2口
读锁存器
内部 总线 0
写锁 存器
2
DQ CK /Q
地址高8位 控制 =1
Vcc 内部上拉电阻
0
1
3
=0
导 引脚P2.X 通
1 读引脚 =0
单片机及接口技术
控制=1 时,此脚作通用输出口: 输出=0 时
例5-1.设计一电路,监视某开关K,用发光二极 管LED显示开关状态,如果开关合上,LED亮、 开关打开,LED熄灭

JAVA课后习题答案

JAVA课后习题答案

JAVA课后习题答案第⼀章Java语⾔概述2.“java编译器将源⽂件编译为的字节码⽂件是机器码”这句话正确吗?答:不正确3.java应⽤程序的主类必须含有怎样的⽅法?答:含有main⽅法4。

“java应⽤程序必须有⼀个类是public类”这句话正确吗?答;不正确,只能有⼀个public类5。

“java Applet程序的主类必须是public类”这句话正确吗?答:正确,因为java Applet主类必须是Applet类的⼦类并且是public的类6。

请叙述java源程序的命名规则。

答:与public的类同名。

7。

源⽂件⽣成的字节码⽂件在运⾏时都加载到内存中吗?答:⾮也,动态随需要运⾏才加载。

8.⾯向对象的程序设计语⾔有那些基本特征?答:封装;继承;多态性。

9.在Java程序中有多个类⽂件时,⽤Java命令应该运⾏那个类?答:具有main⽅法的类第⼆章基本数据类型和数组4。

下列哪些语句是错的?Int x=120;Byte b=120;b=x;答:B=x;错应为b=(byte)x5。

下列哪些语句是错的?答:y=d;错,应y=(float)d6。

下列两个语句是等价的吗?Char x=97;Char x=…a?;答:是等价的。

7。

下列system.out.printf语句输出结果是什么?Int a=97;Byte b1=(byte)128;Byte b2=(byte)(-129);System.out.printf(“%c,%d,%d”,a,b1,b2);如果输出语句改为:System.out.printf(“%d,%d,%d”,a,b1,b2);输出什么?答:输出a ,-128,127修改后输出97,-128,1278.数组是基本数据类型吗?怎样获取数组的长度?答:不是基本数据类型,是复合数据类型。

可以通过:数组名.length的⽅法获得数组长度9。

假设有两个int类型数组:Int[] a=new int[10];Int[] b=new int[8];b=a;A[0]=100;B[0]的值⼀定是100吗?答;⼀定,因为a数组与b数组引⽤相同。

Java练习题1-4章

Java练习题1-4章

第1章Java开发入门一、填空题1、Java程序的运行环境简称之为______。

2、编译Java程序需要使用______命令。

3、和两个可执行程序存放在JDK安装目录的______目录下。

4、______环境变量用来存储Java的编译和运行工具所在的路径。

二、选择题1、Java属于以下哪种语言A、机器语言B、汇编语言C、高级语言D、以上都不对2、下面哪种类型的文件可以在Java虚拟机中运行A、.javaB、.jreC、.exeD、.class3、安装好JDK后,在其bin目录下有许多exe可执行文件,其中命令的作用是以下哪一种A、Java文档制作工具B、Java解释器C、Java编译器D、Java启动器4、如果jdk的安装路径为:d:\jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量path设置为以下哪个选项A.d:\jdk;B.d:\jdk\bin;C.d:\jre\bin;D.d:\jre;第2章基本数据类型与数组一、填空题1、Java中的程序代码都必须在一个类中定义,类使用______关键字来定义。

2、布尔常量即布尔类型的两个值,分别是______和______。

3、Java中的注释可分为三种类型,分别是______、______、______。

4、Java中的变量可分为两种数据类型,分别是______和______。

5、在Java中,byte类型数据占______个字节,short类型数据占______个字节,int类型数据占______个字节,long类型数据占______个字节。

6、在逻辑运算符中,运算符______和______用于表示逻辑与,______和______表示逻辑或。

7、若x = 2,则表达式( x + + )/3 的值是______。

8、若int a =2; a+=3;执行后,变量a的值为______。

9、若int []a={12,45,34,46,23}; ,则a[2]= ______。

JAVA实用教程(第三版)课后习题及答案

{returna;}}public classB
{
void g()
{
A a=new A(); a.weight=23f; a.f(3,4);
}}
答:a.weight=23f;错
1.编写一个类,该类创建的对象可以计算等差数列的和。解:classDengCha{
int start,d; DengCha(){
Case 4: System.out.printf(“%c”,’d’); Break;
}
}
输出:a,b, b,c,d,d
9.下列System.out.printf语句输出的结果是什么?
Char a[]={‘a’,’b’,’c’,’d’,’e’}; For(i=0; i<=a.length/2; i++)
答:不,只加载本程序用到的类到内存中,因为java程序是动态加载, 字节码类文件。
16.有哪几种访问权限修饰符?说出一种的作用。答:访问权限修饰符有public,private,protected.
Private作用是只允许本类的对象访问。
17.怎样反编译一个类?
答:使用SDK提供的反编译器javap.exe文件可以实现将字节码文件反编译为源码文件。可查看源码中public方法和public成员变量的名字。如加入参数-private则可列出其全部的成员方法和成员变量。
9.请阐述为什么类方法不能调用实例方法?
答:对于类方法在该类加到内存时就分配了相应的入口地址,所以即使该类未创建对象,也可以通过类名调用类方法。而这时在类对象创建之前,实例方法还没有入口地址。还不知道一个方法从何处开始执
行,当然不能调用。
10.请阐述,为什么类方法中不能操作实例成员变量?

JAVA期末复习题及答案——第五章

JAVA期末复习题及答案——第五章一.填空题1.Java不直接支持多继承,但可以通过接口实现多继承。

2.任何一个Java程序都默认引入了一个包,这个包的名字叫做java. lang 。

使用已经存在的类定义作为基础建立新的类定义,这样的技术叫做_类的继承__3.用来实现接口的关键字是 implements 。

4. 对象替换原则是指父类的句柄可以指向子类的对象。

5.子类继承父类使用关键字extends6.一个类中如果存在一个或多个抽象方法,那么这个类是一个抽象类。

7.抽象类中可以(“可以”或者“不可以”)不存在抽象的方法,可以(“可以”或者“不可以”)存在非抽象的方法。

8.接口中的属性的默认修饰符为 public static final ,接口中方法的默认修饰符为 public abstract 。

二.选择题1.用来引入已定义好的类或包的语句是:BA、mainB、importC、public classD、class2.下列叙述中,错误的是: DA、父类不能替代子类B、子类能够替代父类C、子类继承父类D、父类包含子类3.程序执行的结果(C)public class Test {String name="Tom";public Test(String name){name=name;}public static void main(String [] args){Test t = new Test("Jack");System.out.println();}}A 编译有错B JackC TomD 以上答案都不对4.在 Java 中,关于static关键字的说法错误的是(D)A static 可以修饰方法B static 可以修饰变量C static 可以修饰代码块D static 修饰的方法,在该方法内部可以访问非静态的类成员变量5.关于 Java 中继承的特点,下列说法正确的是(B)A 使类的定义复杂化B Java 只支持单继承,不可多继承,但可以通过实现接口来达到多继承的目的C 子类继承父类的所有成员变量和方法,包括父类的构造方法D 不可以多层继承,即一个类不可以继承另一个类的子类6.程序的执行结果是(D)public class Test {public static void main(String [] args){Child c = new Child();}}class Father{public Father(){System.out.println("父类无参构造函数");}public Father(String name){System.out.println("父类有参构造函数");}}class Child extends Father{public Child(){this("dd");System.out.println("子类无参构造函数");}public Child(String name){super("dd");System.out.println("子类有参构造函数");}}A 子类无参构造函数子类有参构造函数父类无参构造函数B 子类有参构造函数子类无参构造函数父类无参构造函数C 父类无参构造函数子类有参构造函数子类无参构造函数D 父类有参构造函数子类有参构造函数子类无参构造函数三.判断题1.在进行类的继承时,一个子类只能有一个父类,一个父类也只能有一个子类。

第五章 继承与多态

Person
Teacher
Student
Cloneable()接口
• • • • • • • • • • • • • class Circle { public Point point=new Point(1,2); public int[]arrayInt=new int[]{1,2,3,4,5,6}; public double radius=50; public Circle(Point p,int[] array,double radius){ public Circle clone(){}//需要实现 } public class CircleTest { public static void main(String[] args) { Circle c=new Circle(); Circle d=c.clone(); } }
பைடு நூலகம்含的语句
方法的覆写
例子
子类想调用父类被覆写的方法
内部类
• 在类内部也可以定义另一个类。如果类Outer的内部再定 义一个类Inner,则Inner被称为内部类。 • 内部类可声明public和private,对它的访问的限制与 成员方法和变量相同。 • Public class Outer{ • //外部类的成员 • public class Inner{ • //内部类的成员 • } • }
interface Network{ public void browse() ; // 浏览 } class Real implements Network{ public void browse(){ System.out.println("上网浏览信息") ; } }; class Proxy implements Network{ private Network network ; // 代理对象 public Proxy(Network network){ work = network ; } public void check(){ System.out.println("检查用户是否合法。 ") ; } public void browse(){ this.check() ; work.browse() ; // 调用真实的主 题操作 } }; public class ProxyDemo{ public static void main(String args[]){ Network net = null ; net = new Proxy(new Real()) ;// 指定代 理操作 net.browse() ; // 客户只关心上 网浏览一个操作 } };

面向对象程序设计-Java语言05


(2)如果实现某接口的类不是 abstract的抽象类,则在类的定义部 分必须实现接口的所有抽象方法, 即为所有抽象方法定义方法体,而 且方法头部分应该与接口中的定义 完全一致,即有完全相同的返回值 和参数列表。 (3)如果实现某接口的类是 abstract的抽象类,则它可以不实现 该接口所有的方法。
然而在解决实际问题的过程中, 在很多情冴下仅仅依靠单继承不 能将复杂的问题描述清楚。为了 Java程序的类间层次结构更加合 理,更符合实际问题的本质要求, Java语言提供接口来实现多重继 承机制。
1.声明接口,格式如下: [修饰符] interface接口名[extends 父接口名列表]{ 常量数据成员声明 抽象方法声明
(2)接口中定义的数据成员全是 public final static成员,即常量。 (3)接口中没有自身的构造方法, 所有成员方法都是public abstract方法, 即抽象方法。 (4)接口也具有继承性,可以通过 extends关键字声明该接口的父接口。
一个类要实现接口时,即一个类 要调用多个接口时,要注意以下 几点。: (1)在类中,用implements关键字 就可以调用接口。一个类可以调用 多个接口,这时,在implements后 用逗号隔开多个接口的名称。
2.super的使用场合。super表示 的是当前对象的直接父类对象, 是当前对象的直接父类对象的引 用。 super的使用方法有3种:
(1)用来访问直接父类隐藏的数据成 员,其使用形式如下: super.数据成员 (2)用来调用直接父类中被覆盖的成 员方法,其使用形式如下: super.成员方法(参数) (3)用来调用直接父类的构造方法, 其使用形式如下: super(参数)
父类与子类乊间的关系如图所示:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
所以类在实现时,必须显示的使用public修饰符, 所以类在实现时,必须显示的使用public修饰符,否 public修饰符 则被警告缩小了接口中定义的方法的访问控制范围。 则被警告缩小了接口中定义的方法的访问控制范围。
11
实例:接口的定义和实现 实例:
class InterfaceTest interface A { { public static void main(String args[ ]) double g=9.8; { void show( ); B b=new B( ); b.show( ); } } class B implements A } { public void show( ) {System.out.println(“g=“+g);} }
注意
没有extends,默认父类为Object 没有 ,默认父类为 只能有一个父类, 只能有一个父类,即单继承 子类继承父类的全部成员
4
5.1.2 this和super关键字 5.1.2 this和super关键字
1.this的使用 1.this的使用 this (1)访问当前对象的数据成员 (2)访问当前对象的成员变量 (3)重载时用来引用同类的其他构造方法 2.super的使用 2.super的使用 super (1)访问直接基类中被隐藏的数据成员 (2)调用直接基类中被重写的成员方法 (3)调用直接基类的构造方法
14
}
5.4.1 包的创建 5.4.1
(1)缺省情况下为无名包 ) (2)有名包的创建:使用 )有名包的创建:使用package语句 语句 如:package pname 或 package dir1.dir2.pname 包就是一个文件夹,里面存放.class文件, 文件, 包就是一个文件夹,里面存放 文件 包中的“ ”号表示子文件夹。 包中的“.”号表示子文件夹。
10
5.3.2 接口的实现 5.3.2
在类的声明中使用implements关键字来实 关键字来实 在类的声明中使用 说明: 说明: 现接口, 现接口,一个类可以同时实现多个接 (1)若实现接口的类不是抽象类,则必须实现所有 若实现接口的类不是抽象类, 各接口间用“ 隔开。 口,各接口间用“,”隔开。 接口的所有方法,即为所有的抽象方法定义方法体。 接口的所有方法,即为所有的抽象方法定义方法体。 class classname implements interfacename{ 一个类在实现某接口抽象方法时, (2)一个类在实现某接口抽象方法时,必须使用完 //重写接口中的方法。 重写接口中的方法; 重写接口中的方法; 全相同的方法名,参数列表。 全相同的方法名,参数列表 } 接口的抽象方法的访问控制符已指定为public, (3)接口的抽象方法的访问控制符已指定为public,
15
5.4.2 包的引用 5.4.2
(1)使用包名、类名前缀 )使用包名、 例如: 例如: mypack1.mypack2.Myclass (2)加载引用:使用 )加载引用:使用import语句 语句 格式: 格式:import mypack1.mypack2.Myclass 或 import mypack. mypack2.* (3)直接引用:在同一文件夹下 )直接引用:
工人类, 工人类,继承了父 类的姓名和性别属 性外还包含类别和 是否有服装津贴属性
Worker类: 类 category dressAllowance 3 Emoloyee类: 类 name sex
职员类, 职员类,具 有姓名和性 别两个属性
Officer类: 类 empClass vehicle
主任类, 主任类,还包含 级别和是否配备 交通工具属性
5.3.1 接口的定义 5.3.1
说明: 说明:
[修饰符 interface 接口名称 修饰符] 接口名称{ 修饰符
[public] [static] able或变量名=初值; //静态常量 [final] 变量名=初值; 静态常量 通常接口的名字以able ible结尾 结尾; (1)通常接口的名字以able或ible结尾; [public] [abstract] [native]返回值 方法名([参数 返回值 方法名( (2)可以使用extends来继承接口的常量和抽象方法,参数 可以使用extends来继承接口的常量和抽象方法, extends来继承接口的常量和抽象方法 表])throws [异常列表 ,它可以有多个父接口, 异常列表] ) 异常列表 但它与类中的extends不同,它可以有多个父接口, extends不同 方法 但它与类中的extends不同 //方法 } 各父接口间用逗号隔开; 各父接口间用逗号隔开;
5.1.4 类对象之间的类型转换 5.1.4
子类对象和基类对象之间的转换: 子类对象和基类对象之间的转换: 子类对象可以隐式, (1)子类对象可以隐式,也可以转换为基类 对象 (2)处于相同类层次的类对象之间不能进行 转换 (3)子类对象在一定的条件下可以转换成基 类对象,但必须使用强制类型转换。 类对象,但必须使用强制类型转换。
7
5.2.1 方法ቤተ መጻሕፍቲ ባይዱ载 5.2.1
• • • • 方法重载是Java实现面向对象的多态性机 实现面向对象的多态性机 方法重载是 制的一种方式。 制的一种方式。 同一个类中多个方法有相同的名字, 同一个类中多个方法有相同的名字,不同 的参数列表,这种情况称为方法重载。 的参数列表,这种情况称为方法重载。 返回类型不同并不足以构成方法重载。 返回类型不同并不足以构成方法重载。 当重载方法被调用时, 当重载方法被调用时,编译器根据参数的 类型和数量来确定实际调用哪个重载方法 的版本。 的版本。
16
5.4.3 设置CLASSPATH环境变量 5.4.3 设置CLASSPATH环境变量
CLASSPATH变量指明“.class”文件存放的位置。 变量指明“ 文件存放的位置。 变量指明 文件存放的位置 编译时: 编译时:javac –d CLASSPATH路径 Myclass.java 路径 例如:javac –d d:\java myclass.java 例如: 则直接在d:\java下创建在 下创建在myclass.java指明 则直接在d:\java下创建在myclass.java指明 的包目录,并把Myclass.class拷到该目录下。 拷到该目录下。 的包目录,并把 拷到该目录下
组合: interface A{ int sub(int a,int b); } interface B{ int add(int a,int b); } interface C extends A,B{ int mul(int a,int b); }
5.3.4 接口的多态 5.3.4
interface viecle{ abstract boolean start( ); } class Car implements viecle{ boolean start( ){ //发动引擎 } 发动引擎 } class Ship implements viecle{ boolean start( ){ //抛锚 } 抛锚
12
5.3.3 接口的继承 5.3.3
interface A{ int sub(int a,int b); } interface B extends A{ int add(int a,int b); } interface C extends B{ int mul(int a,int b); }13
17
5.5 Java类库 Java类库
Java中常用的包有: 中常用的包有: 中常用的包有 applet、awt、io、lang、net、util 、 、 、 、 、
18
总结
1. 掌握类、对象、继承、抽象类、接口和包的 掌握类、对象、继承、抽象类、 定义与使用。 定义与使用。 2. 掌握定义类时的各种细节,构造方法的定义 掌握定义类时的各种细节, 和使用,方法的重载,方法的重写。 和使用,方法的重载,方法的重写。
第5章 章
继承与接口
JAVA语言程序设计 语言程序设计
目标
• 继承和多态的概念及其实现。 继承和多态的概念及其实现。 • this和super的使用。 this和super的使用 的使用。 • 包和接口的使用。 包和接口的使用。
2
5.1.1 类继承的实现2-1 5.1.1 类继承的实现2
• 被继承的类称为父类 • 继承父类的类称为子类 • 执行继承时,子类将获得父类的属性,并具 执行继承时,子类将获得父类的属性, 有自身特有的属性。 有自身特有的属性。
19
5
5.1.3 抽象类和抽象方法 5.1.3
• • • • • • • • •
6
定义目的是提供可由其子类共享的一般形式。 定义目的是提供可由其子类共享的一般形式。 抽象类不能实例化。 抽象类不能实例化。 抽象方法没有函数体。 抽象方法没有函数体。 抽象方法必须在子类中给出具体实现。 抽象方法必须在子类中给出具体实现。 抽象类中可以没有抽象方法, 抽象类中可以没有抽象方法,有抽象方法的类一 定是抽象类。 定是抽象类。 抽象类必须继承,子类根据自身需要扩展抽象类。 抽象类必须继承,子类根据自身需要扩展抽象类。 abstract不能和final叠用修饰类 不能和final叠用修饰类。 abstract不能和final叠用修饰类。 不能有private成员变量和方法。 private成员变量和方法 不能有private成员变量和方法。 不能和private、static、final叠用修饰方法 叠用修饰方法。 不能和private、static、final叠用修饰方法。
8
5.2.2 方法重写 5.2.2
• • • • • •
9
方法重写是Java实现多态性机制的另一种方式。 实现多态性机制的另一种方式。 方法重写是 实现多态性机制的另一种方式 在类层次结构中, 在类层次结构中,如果子类中的一个方法与父类 中的方法有相同的方法名并具有相同数量和类型 的参数列表,这种情况称为方法重写。 的参数列表,这种情况称为方法重写。 重写方法通过父类引用被调用,Java根据当前被 重写方法通过父类引用被调用,Java根据当前被 引用对象的类型来决定执行哪个版本的方法。 引用对象的类型来决定执行哪个版本的方法。 可通过super关键字调用直属父类中被重写的方法。 关键字调用直属父类中被重写的方法。 可通过 关键字调用直属父类中被重写的方法 子类定义与父类同名的变量,使父类变量隐藏, 子类定义与父类同名的变量,使父类变量隐藏, 但仍有自己的空间,在子类中可调用。 但仍有自己的空间,在子类中可调用。 子类重写父类方法,会清除父类空间, 子类重写父类方法,会清除父类空间,在子类中 不存在。 不存在。
相关文档
最新文档