java第03讲-面向对象程序设计详解.ppt

上传人:豆**** 文档编号:33107080 上传时间:2022-08-10 格式:PPT 页数:106 大小:664KB
返回 下载 相关 举报
java第03讲-面向对象程序设计详解.ppt_第1页
第1页 / 共106页
java第03讲-面向对象程序设计详解.ppt_第2页
第2页 / 共106页
点击查看更多>>
资源描述

《java第03讲-面向对象程序设计详解.ppt》由会员分享,可在线阅读,更多相关《java第03讲-面向对象程序设计详解.ppt(106页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、2022-8-102本章总体纲要本章总体纲要 类、域、方法和实例对象类、域、方法和实例对象 继承性继承性 多态性多态性 包包(package) 封装性封装性 关键字关键字abstract、static、final和和this 接口接口 内部类内部类 变量作用域范围和参数传递方式变量作用域范围和参数传递方式 面向对象程序设计基本思想面向对象程序设计基本思想2022-8-103面向对象程序设计整体介绍面向对象程序设计整体介绍 面向对象程序设计面向对象程序设计(OOP) 将将数据数据(属性属性)和和方法方法(行为或功能行为或功能)封装封装到类到类(classes)中中 数据数据与与方法方法常常是紧密

2、相关的常常是紧密相关的 对象对象(objects): 类的实例对象或类本身类的实例对象或类本身 三个基本特性:三个基本特性:封装性封装性、继承性继承性和和多态性多态性2022-8-104比较比较 结构化程序设计结构化程序设计 对应的典型的计算机语言对应的典型的计算机语言, 例如例如: C 面向操作面向操作(action)的的 函数函数(方法方法)是程序的基本单位是程序的基本单位 面向对象程序设计面向对象程序设计 对应的典型的计算机语言对应的典型的计算机语言, 例如例如: Java 面向面向对象对象(object)的的 类类(class)是程序的基本单位是程序的基本单位 方法方法(函数函数)被封

3、装在类中被封装在类中 数据数据也常常被封装在类中也常常被封装在类中2022-8-105类类 类类(class)本身也是一种对象本身也是一种对象 类类(class)同时也是实例对象的模板同时也是实例对象的模板 类类(class) 的基本组成:的基本组成:(成员成员)域域和和(成员成员)方法方法 每个对象:拥有内存每个对象:拥有内存存储成员域存储成员域/方法方法 静态的成员静态的成员域域/方法方法属于类属于类 其它成员其它成员域域/方法方法属于实例对象属于实例对象2022-8-106类的定义类的定义 类的定义格式如下:类的定义格式如下:类修饰词类修饰词 class 类名类名 extends 父类名

4、父类名 implements 接口名称列表接口名称列表 类体类体2022-8-107多个类组成的程序多个类组成的程序 很多很多Java程序需要多个类完成一项任务程序需要多个类完成一项任务 一个文件一般只含有一个类一个文件一般只含有一个类 每个文件的长度一般不要太长每个文件的长度一般不要太长 最长一般不要超过最长一般不要超过2000行行2022-8-108方法定义方法定义 与与C+程序不同的是程序不同的是: 每个方法都必须隶属于某个类每个方法都必须隶属于某个类 方法定义的格式方法定义的格式: 方法修饰词方法修饰词 返回类型返回类型 方法名方法名(方法的参数列表方法的参数列表) 方法体方法体 返回

5、类型返回类型: 返回数据的数据类型返回数据的数据类型 除了构造方法,一般要求返回类型除了构造方法,一般要求返回类型: 要么为要么为void ,要么为,要么为某种数据类型某种数据类型int、byte、float或或String 最多只能返回一个值最多只能返回一个值 方法名方法名: 任何一个合法的标识符任何一个合法的标识符 参数列表参数列表: 用逗号用逗号(,)分隔开分隔开2022-8-109返回控制返回控制 如果没有值返回如果没有值返回: return; / 退出该方法退出该方法 或者遇到该方法的最后一个或者遇到该方法的最后一个“”,则退出该,则退出该方法方法 如果有值返回如果有值返回: ret

6、urn 表达式表达式; / 退出该方法退出该方法 返回该表达式的值返回该表达式的值2022-8-1010构造方法构造方法 构造方法构造方法在创建新的实例对象时起作用在创建新的实例对象时起作用 构造方法构造方法通常用来初始化实例对象,例如通常用来初始化实例对象,例如: 初始初始化成员域或设置工作环境化成员域或设置工作环境 构造方法构造方法的特点的特点: 与类同名与类同名 没有返回值没有返回值 可以含有多种可以含有多种构造方法构造方法(重载重载) 但必须具有不同的参数列表但必须具有不同的参数列表2022-8-10 申博 申博官网 申博sunbet官网2022-8-1012默认的构造方法默认的构造方

7、法 如果没有显式地定义类的构造方法,则系统会为该类定如果没有显式地定义类的构造方法,则系统会为该类定义一个默认的构造方法。该构造方法不含任何参数。义一个默认的构造方法。该构造方法不含任何参数。 这个默认的构造方法首先调用其父类的不含任何参数的构造这个默认的构造方法首先调用其父类的不含任何参数的构造方法,然后初始化新生成的实例的各个成员域变量方法,然后初始化新生成的实例的各个成员域变量 默认值默认值: 基本数值类型基本数值类型: 0; boolean: false; 引用数据类型引用数据类型: null 最好自己写构造方法最好自己写构造方法 一旦在类中定义了构造方法,系统就不会再创建这个默一旦在

8、类中定义了构造方法,系统就不会再创建这个默认的不含参数的构造方法。认的不含参数的构造方法。2022-8-1013父类的构造方法父类的构造方法 每个构造方法都必须调用其父类的构造每个构造方法都必须调用其父类的构造方法方法 隐式调用隐式调用: 默认方式默认方式 (无参数的父类构造方无参数的父类构造方法法) 显式调用显式调用: super(参数列表参数列表); /可以根据需要,指定参数可以根据需要,指定参数 如果是显式调用,则必须是第一条语句如果是显式调用,则必须是第一条语句2022-8-1014实例实例/ / 编写一个程序验证编写一个程序验证:/ 父类构造方法的调用方式父类构造方法的调用方式/ /

9、2022-8-1015源程序源程序/ J_Test.java, by Jun-Hai Yongclass J_SuperClass J_SuperClass() System.out.println(Enter: J_SuperClass(); / End of constructor: J_SuperClass() / End of class: J_SuperClassclass J_SubClass extends J_SuperClass J_SubClass() System.out.println(Enter: J_SubClass(); / End of constructor:

10、 J_SubClass() / End of class: J_SubClasspublic class J_Test public static void main(String args) new J_SubClass(); / End of method: main / End of class: J_Test2022-8-1016编译、运行编译、运行 & 结果结果2022-8-1017结束结束(/析构析构)处理处理 内存内存 构造过程构造过程: 当创建新的实例对象时,分配内存,并占用内存当创建新的实例对象时,分配内存,并占用内存 垃圾回收垃圾回收(析构过程析构过程) 返回内存给系统返回

11、内存给系统 Java自动进行这种处理自动进行这种处理 当实例对象不再被使用了,那么就会被标记,作为垃圾回收的对象当实例对象不再被使用了,那么就会被标记,作为垃圾回收的对象 垃圾回收器在适当的时候回收这些内存垃圾回收器在适当的时候回收这些内存 内存泄露内存泄露: Java比比C/C+好很多,好很多,Java语言几乎没有语言几乎没有2022-8-1018finalize( ) 方法方法 Java提供方法提供方法 finalize( ) 在在java.lang.Object包中定义包中定义 所有的类都有所有的类都有 finalize( )方法方法 没有任何方法参数,也不返回任何值没有任何方法参数,也

12、不返回任何值(void) Java调用方法调用方法finalize( )的时机的时机: 当对象刚要被当对象刚要被回收之前回收之前 但不保证方法但不保证方法finalize( )一定会被调用到一定会被调用到 一定不要依赖于方法一定不要依赖于方法finalize( )来统计资源的释放情来统计资源的释放情况况2022-8-1019实例实例/ / 编写程序来验证:编写程序来验证:/ 垃圾回收机制中的垃圾回收机制中的/ finalize( )/ /2022-8-1020源程序源程序/ J_Finalize.java, by Jun-Hai Yongclass J_Book private String

13、m_name; J_Book(String name) m_name = name; / End of constructor: J_Book(String name) public void finalize() System.out.println(Book, + m_name + , is destroyed!); / End of method: finalize / End of class: J_Bookpublic class J_Finalize public static void main(String args) J_Book book1= new J_Book(Gone

14、 with Wind); new J_Book(Java How to Program); / Drop the reference new J_Book(Roman Holiday); System.gc(); / Force garbage collection & finalization / End of method: main / End of class: J_Finalize2022-8-1021编译、运行编译、运行 & 结果结果2022-8-1022本章总体纲要本章总体纲要 类、域、方法和实例对象类、域、方法和实例对象 继承性继承性 多态性多态性 包包(package) 封装

15、性封装性 关键字关键字abstract、static、final和和this 接口接口 内部类内部类 变量作用域范围和参数传递方式变量作用域范围和参数传递方式 面向对象程序设计基本思想面向对象程序设计基本思想2022-8-1023继承性继承性 继承性继承性 软件重用的一种方法软件重用的一种方法 根据已有的类创建新的类根据已有的类创建新的类 采纳了旧的类的属性采纳了旧的类的属性(域域)及其行为及其行为(方法方法) 增加了新的能力增加了新的能力 子类继承父类子类继承父类 子类增加了新的成员域或新的成员方法子类增加了新的成员域或新的成员方法 有时可以理解成有时可以理解成: (但不绝对但不绝对!) 子

16、类对象子类对象是是一种特殊的父类对象一种特殊的父类对象2022-8-1024继承性继承性的实现的实现 采用关键字采用关键字extendspublic class J_HelloApplet extends Applet / / 类类J_HelloApplet结束结束2022-8-1025关键字关键字: instanceof 运算符运算符: instanceof 例如例如:if (p instanceof Circle) 上面的条件为上面的条件为 true, 当且仅当引用当且仅当引用p所指向的所指向的对象是类对象是类Circle(或其或其子类子类)的实例对象的实例对象2022-8-1026实例实

17、例/ CompareTestimport java.awt.*;public class CompareTest public static void main(String args) Button b = new Button(Exit); boolean compare1 = b instanceof Button; boolean compare2 = b instanceof Component; System.out.println(Is b a Button? + compare1); System.out.println(Is b a Component? + compare2

18、); 2022-8-1027程序输出结果程序输出结果Is b a Button? trueIs b a Component? true2022-8-1028父类实例对象与子类实例对象之间的关系父类实例对象与子类实例对象之间的关系 子类实例对象可以认为也是其父类的实子类实例对象可以认为也是其父类的实例对象例对象 反之,则不对反之,则不对 可以配合使用这种特性与多态性可以配合使用这种特性与多态性 主要用一个父类拥有多种子类主要用一个父类拥有多种子类 通过父类的引用,调用子类的特定方法通过父类的引用,调用子类的特定方法 父类的引用指向子类的实例对象父类的引用指向子类的实例对象2022-8-1029隐

19、式及显式数据类型转换隐式及显式数据类型转换 数据类型转换数据类型转换: 隐式隐式 和和 显式显式 隐式隐式: 父类引用父类引用=子类对象的引用子类对象的引用 较高精度类型的变量较高精度类型的变量=较低精度类型的值较低精度类型的值 显式显式: 子类引用子类引用=(子类名子类名)父类对象的引用父类对象的引用 较低精度类型的变量较低精度类型的变量=(较低精度类型名较低精度类型名)较高精较高精度类型的值度类型的值2022-8-1030多重继承多重继承 在有些计算机语言中,允许一个类有多在有些计算机语言中,允许一个类有多个直接父类。这种继承关系称为个直接父类。这种继承关系称为多重继多重继承承 Java不

20、支持不支持多重继承多重继承 Java 允许一个类有多个直接父接口允许一个类有多个直接父接口(interface) 2022-8-1031本章总体纲要本章总体纲要 类、域、方法和实例对象类、域、方法和实例对象 继承性继承性 多态性多态性 包包(package) 封装性封装性 关键字关键字abstract、static、final和和this 接口接口 内部类内部类 变量作用域范围和参数传递方式变量作用域范围和参数传递方式 面向对象程序设计基本思想面向对象程序设计基本思想2022-8-1032多态性多态性 优点优点: 代码重用代码重用 简化设计、简化代码简化设计、简化代码 便于程序扩展便于程序扩展

21、2022-8-1033多态性的种类多态性的种类静态的多态性静态的多态性重载重载动态的多态性动态的多态性覆盖覆盖2022-8-1034静态的多态性静态的多态性(重载重载) 在编译时就能够被识别在编译时就能够被识别 针对的是同一个类内的同名方法针对的是同一个类内的同名方法 例如例如: public int square(int x) return x * x; public double square(double x) return x * x;2022-8-1035识别重载方法识别重载方法 识别标志识别标志: 参数的个数、类型、数据类型的排列顺序参数的个数、类型、数据类型的排列顺序 返回值不能

22、做为识别的标志返回值不能做为识别的标志2022-8-1036动态多态性动态多态性(覆盖覆盖) 在程序运行时才被识别在程序运行时才被识别 重写父类的方法重写父类的方法 要求相同的声明要求相同的声明 例如例如:public class J_HelloApplet extends JApplet public void paint(Graphics g) g.clearRect(0, 0, getWidth( ), getHeight( ); / 清除背景清除背景 g.drawString(小应用程序,您好小应用程序,您好!, 10, 20); / 方法方法paint结束结束 / 类类J_Hello

23、Applet结束结束2022-8-1037源程序源程序: J_Teacher.Java/ 文件名文件名: J_Teacher.java; 开发者开发者: 雍俊海雍俊海class J_Employee public int m_workYear; / 工作的年限工作的年限 public J_Employee( ) m_workYear = 1; / J_Employee构造方法结束构造方法结束 public void mb_printInfo( ) System.out.println(该职工的工作年限为该职工的工作年限为 + m_workYear); / 方法方法mb_printInfo结束结

24、束 / 类类J_Employee结束结束2022-8-1038public class J_Teacher extends J_Employee public int m_classHour; / 授课的课时授课的课时 public J_Teacher( ) m_classHour = 96; / J_Teacher构造方法结束构造方法结束 public void mb_printInfo( ) System.out.println(该教师的工作年限为该教师的工作年限为 + m_workYear); System.out.println(该教师授课的课时为该教师授课的课时为 + m_class

25、Hour); / 方法方法mb_printInfo结束结束 public static void main(String args ) J_Employee a = new J_Employee( ); a.mb_printInfo( ); a = new J_Teacher( ); a.mb_printInfo( ); / 方法方法main结束结束 / 类类J_Teacher结束结束源程序源程序: J_Teacher.Java2022-8-1039编译、运行编译、运行 & 结果结果2022-8-1040本章总体纲要本章总体纲要 类、域、方法和实例对象类、域、方法和实例对象 继承性继承性 多态

26、性多态性 包包(package) 封装性封装性 关键字关键字abstract、static、final和和this 接口接口 内部类内部类 变量作用域范围和参数传递方式变量作用域范围和参数传递方式 面向对象程序设计基本思想面向对象程序设计基本思想2022-8-1041包包 可以将一组相关的类或接口封装在包可以将一组相关的类或接口封装在包(package)里,从而更好地管理已经开发里,从而更好地管理已经开发的的Java代码代码 包含组织类与接口的目录结构包含组织类与接口的目录结构 方便程序重用方便程序重用2022-8-1042创建包创建包创建创建public类类如果类不是如果类不是public,

27、 则通常只能在同一包内使用则通常只能在同一包内使用(或派生子类或派生子类)选取一个包名选取一个包名(package)并在源程序中增加一条并在源程序中增加一条package语句语句编译,生成编译,生成.class文件文件 (放在相应的目录下放在相应的目录下)通过通过import语句,加入到其它程序中语句,加入到其它程序中命名规则命名规则: Internet域名的逆序域名的逆序 + 其它名其它名一般全部采用小写一般全部采用小写ASCII字母字母例如例如, package com.google.soap.search; package edu.cmu.cs.bovik.cheese;2022-8-1

28、043注意事项注意事项 建包的建包的package语句必须是源程序文件的语句必须是源程序文件的第一条语句第一条语句2022-8-1044建包实例建包实例: Time1.java1 / Fig. 8.4: Time1.java2 / Time1 class definition in a package3 package com.deitel.jhtp4.ch08;4 5 / Java core packages6 import java.text.DecimalFormat; 7 8 public class Time1 extends Object 9 private int hour; /

29、 0 - 2310 private int minute; / 0 - 5911 private int second; / 0 - 5912 13 / Time1 constructor initializes each instance variable14 / to zero. Ensures that each Time1 object starts in a 15 / consistent state.16 public Time1()17 18 setTime( 0, 0, 0 );19 20 21 / Set a new time value using universal ti

30、me. Perform 22 / validity checks on the data. Set invalid values to zero.23 public void setTime( int h, int m, int s )24 25 hour = ( ( h = 0 & h = 0 & m = 0 & s 60 ) ? s : 0 );28 类类 Time1 被放入包中被放入包中从包从包 java.text加入类加入类DecimalFormat类类 Time1 所在目录所在目录 com/deitel/jhtp4/ch082022-8-1045建包实例建包实例: Time1.jav

31、a30 / convert to String in universal-time format31 public String toUniversalString()32 33 DecimalFormat twoDigits = new DecimalFormat( 00 );34 35 return twoDigits.format( hour ) + : +36 twoDigits.format( minute ) + : +37 twoDigits.format( second );38 39 40 / convert to String in standard-time format

32、41 public String toString()42 43 DecimalFormat twoDigits = new DecimalFormat( 00 );44 45 return (hour = 12 | hour = 0) ? 12 : hour % 12) +46 : + twoDigits.format( minute ) +47 : + twoDigits.format( second ) +48 ( hour 12 ? AM : PM );49 50 51 / end class Time1调用包调用包 java.text中的类中的类DecimalFormat2022-8

33、-1046实例实例: TimeTest3.java1 / Fig. 8.5: TimeTest3.java2 / Class TimeTest3 to use imported class Time13 4 / Java extension packages5 import javax.swing.JOptionPane;6 7 / Deitel packages8 import com.deitel.jhtp4.ch08.Time1; / import Time1 class9 10 public class TimeTest3 11 12 / create an object of cla

34、ss Time1 and manipulate it13 public static void main( String args )14 15 Time1 time = new Time1(); / create Time1 object 16 17 time.setTime( 13, 27, 06 ); / set new time18 String output = 19 Universal time is: + time.toUniversalString() +20 nStandard time is: + time.toString();21 22 JOptionPane.show

35、MessageDialog( null, output,23 Packaging Class Time1 for Reuse,24 JOptionPane.INFORMATION_MESSAGE );25 26 System.exit( 0 );27 28 29 / end class TimeTest3从包从包com.deitel.jhtp4.ch08 加加入类入类Time1从包从包javax.swing加入类加入类JOptionPaneTimeTest3 声明声明 Time1 对象对象2022-8-1047编译、运行编译、运行 & 输出输出Time1.class2022-8-1048Jav

36、a 包包 Java系统提供了很多已经写好的包系统提供了很多已经写好的包 数学计算、输入数学计算、输入/输出、字符串操作输出、字符串操作 尽量利用已有的包、避免重复工作尽量利用已有的包、避免重复工作 使用包中类使用包中类 利用利用import 语句指定类的位置语句指定类的位置 例如例如: import javax.swing.JApplet;2022-8-1049包包 包包java.lang java.lang.Object java.lang.Math 包包java.util java.util.Random2022-8-1050本章总体纲要本章总体纲要 类、域、方法和实例对象类、域、方法和实

37、例对象 继承性继承性 多态性多态性 包包(package) 封装性封装性 关键字关键字abstract、static、final和和this 接口接口 内部类内部类 变量作用域范围和参数传递方式变量作用域范围和参数传递方式 面向对象程序设计基本思想面向对象程序设计基本思想2022-8-1051类成员的封装性类成员的封装性 成员成员(域或方法域或方法)的访问控制方式的访问控制方式:1) public2) private3) protected4) default(缺省方式缺省方式)2022-8-1052成员的访问控制方式成员的访问控制方式: public 则该成员可以被任何类中的方法访问则该成员

38、可以被任何类中的方法访问 表明对外开放的方式表明对外开放的方式 少量少量(或者没有或者没有) public 域域 部分部分 public 方法方法 2022-8-1053成员的访问控制方式成员的访问控制方式: private 目的目的: 隐藏具体的实现细节隐藏具体的实现细节 只有同一个类的成员方法才能访问私有只有同一个类的成员方法才能访问私有成员成员 域常常是域常常是private 采用采用 public “get” 方法方法读取数据读取数据 采用采用 public “set”方法方法写数据写数据2022-8-1054成员的访问控制方式成员的访问控制方式: protected 介于介于publ

39、ic 和和private之间之间 同一个包内的所有类的所有方法都能访同一个包内的所有类的所有方法都能访问该成员问该成员 如果不在同一个包内的类的方法要访问如果不在同一个包内的类的方法要访问该成员,则该类必须是该成员所在的类该成员,则该类必须是该成员所在的类的子类的子类2022-8-1055成员的访问控制方式成员的访问控制方式: default (缺省方式缺省方式) 只有在同一个包内的类的方法才能访问只有在同一个包内的类的方法才能访问该方法该方法 2022-8-1056类成员封装性总结类成员封装性总结2022-8-1057本章总体纲要本章总体纲要 类、域、方法和实例对象类、域、方法和实例对象 继

40、承性继承性 多态性多态性 包包(package) 封装性封装性 关键字关键字abstract、static、final 接口接口 内部类内部类 变量作用域范围和参数传递方式变量作用域范围和参数传递方式 面向对象程序设计基本思想面向对象程序设计基本思想2022-8-1058abstract Java允许定义抽象允许定义抽象(abstract)的类和方法的类和方法 抽象抽象(abstract)的方法可以只提供方法的头部,但不提的方法可以只提供方法的头部,但不提供实现的部分供实现的部分 抽象抽象(abstract)的方法只能是抽象的方法只能是抽象(abstract)类中的方法类中的方法 例如例如:p

41、ublic abstract class J_Vehicle public abstract class J_Shape public abstract void fuel(); public abstract void mb_draw(); 2022-8-1059关键字关键字: static 静态的静态的(static)域域和静态的和静态的(static)方法方法实实际上隶属于类对象际上隶属于类对象 静态的静态的(static)域域 示例示例: System.out 静态的静态的(static)方法方法 示例示例: main( ) 示例示例: Math.sqrt( ) public stat

42、ic double sqrt(double a)2022-8-1060关键字关键字: final可以修饰的对象可以修饰的对象: final 域域 final 方法方法1) final 类类2022-8-1061final 域域 当一个域声明为当一个域声明为final时,该域就成为了时,该域就成为了常量,它的值不能再被改变常量,它的值不能再被改变 实例实例:public class Physics private final int INCREMENT = 5; public static final double C = 2.998E8; 建议建议: 域名采用大写字母表示常量域名采用大写字母表

43、示常量2022-8-1062final 方法方法 当一个方法声明为当一个方法声明为final时,则该方法就时,则该方法就不能被其子类中的方法覆盖不能被其子类中的方法覆盖 例如例如: public final String convertCurrency( ) 2022-8-1063final 类类 表明不能用该类来构造子类表明不能用该类来构造子类 例如例如: public final class String2022-8-1064final 参数参数 将方法的参数声明为将方法的参数声明为final没有意义,因没有意义,因为为Java方法调用中参数的传递方式本身方法调用中参数的传递方式本身就是值

44、传递方式就是值传递方式2022-8-1065本章总体纲要本章总体纲要 类、域、方法和实例对象类、域、方法和实例对象 继承性继承性 多态性多态性 包包(package) 封装性封装性 关键字关键字abstract、static、final和和this 接口接口 内部类内部类 变量作用域范围和参数传递方式变量作用域范围和参数传递方式 面向对象程序设计基本思想面向对象程序设计基本思想2022-8-1066接口接口(interface) 接口接口(interface)就象是一种特殊的类就象是一种特殊的类 成员方法成员方法: abstract 成员域成员域: final和和static 接口接口(int

45、erface)中所有的方法和域必须都中所有的方法和域必须都是是 public的的 每个接口一般定义在一个每个接口一般定义在一个.java 文件中文件中 2022-8-1067示例示例 例例1: 通过接口定义一些常量通过接口定义一些常量public interface J_Constantspublic static final int ONE = 1;public static final int TWO = 2;public static final int THREE = 3; / 接口接口J_Constants结束结束 例例2:interface J_Shape public abstr

46、act void mb_draw(Graphics2D g); / 接口接口J_Shape结束结束2022-8-1068注意事项注意事项 接口中成员方法的默认方式是接口中成员方法的默认方式是 public 和和 abstract 接口中成员域的默认方式是接口中成员域的默认方式是public、 static和和final2022-8-1069优点优点 一个类可以继承多个接口一个类可以继承多个接口 例如例如:public class A extends B implements C, D 2022-8-1070本章总体纲要本章总体纲要 类、域、方法和实例对象类、域、方法和实例对象 继承性继承性 多

47、态性多态性 包包(package) 封装性封装性 关键字关键字abstract、static、final和和this 接口接口 内部类内部类 变量作用域范围和参数传递方式变量作用域范围和参数传递方式 面向对象程序设计基本思想面向对象程序设计基本思想2022-8-1071内部类内部类 定义在其它类内部的类称为定义在其它类内部的类称为内部类内部类 内部类有些类似于类的成员域或成员方内部类有些类似于类的成员域或成员方法法2022-8-1072匿名内部类匿名内部类 没有类名没有类名 常常用在图形用户界面设计常常用在图形用户界面设计(GUI)中,进中,进行各种事件处理行各种事件处理 例如例如: 鼠标事件

48、、按钮事件和键盘事件等鼠标事件、按钮事件和键盘事件等2022-8-1073实例实例import java.awt.event.*;/.jButton1.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) / Do something . );/./ Interface: java.awt.event.ActionListener/ void actionPerformed(ActionEvent e) import java.awt.event.*;class MyActionLi

49、stener implements ActionListener public void actionPerformed(ActionEvent e) / Do something . / . jButton1.addActionListener ( new MyActionListener() ); .2022-8-1074本章总体纲要本章总体纲要 类、域、方法和实例对象类、域、方法和实例对象 继承性继承性 多态性多态性 包包(package) 封装性封装性 关键字关键字abstract、static、final和和this 接口接口 内部类内部类 变量作用域范围和参数传递方式变量作用域范围

50、和参数传递方式 面向对象程序设计基本思想面向对象程序设计基本思想2022-8-1075变量的作用域范围变量的作用域范围 作用域范围作用域范围:程序中能够使用该变量:程序中能够使用该变量(域域与局部变量与局部变量)的范围的范围 分类分类: 类作用域范围类作用域范围和和块作用域范围块作用域范围2022-8-1076类作用域范围类作用域范围 从类定义的第一个从类定义的第一个“”开始,到开始,到 最后一个最后一个“”结束结束 超出类的范围,类的成员方法不能直接通超出类的范围,类的成员方法不能直接通过它的名称进行访问过它的名称进行访问 例如例如: 成员域成员域2022-8-1077块作用域范围块作用域范

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com