版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第4章 类、包和接口,Part 1类、域、方法 和 包,2,本节内容,方法:定义格式、可见范围、参数传递 类和对象: 定义格式、构造方法 方法重载 this 关键字 对象的创建和使用 包: 概念 包的构建:package语句 包的引用:import语句 =与equals( )的用法 封装类,3,Java的方法,4,方法的定义格式,定义格式如下: 修饰符 返回值类型 方法名 (形式参数声明) throws 例外名1,例外名2, 局部变量声明; 执行语句组; 例如(source code) public static Channel inheritedChannel() throws IOEx
2、ception return SelectorPvider().inheritedChannel(); ,5,方法的定义几点说明,修饰符:规定方法的特征 访问控制符:public 、private等 非访问控制符:final、static等 返回值: 基本型、引用型 如果有返回值,方法中必须有return语句 如果没有,返回类型为void 方法名:小写字母开头 形参:声明类型+变量名 throws: 抛出异常 表示运行该方法的语句时可能会抛出的异常类型 方法体:局部变量:必须进行初始化 方法体中可以访问所有的成员变量,可以调用类中定义的方法。 方法调用: A.method
3、(b); a.method(b); method(b); this.method(b);,6,方法的使用,方法中变量的可见范围(复习) class Test static int myArg = 1; public static void main(String args) int myArg; System.out.println(myArg); 编译运行的结果是?,7,面向对象的思想概述,面向对象的编程思想力图使对计算机语言中对事物的的描述与现实世界中该事物的本来面目尽可能的一致。 类(class)和对象(object)是面向对象方法的核心概念。类是对一类事物描述,是抽象的、概念上的定义;
4、对象是实际存在的该类事物的每个个体,因而也称实例(instance)。,8,9,JAVA中class的定义格式,定义格式如下: 修饰符 class 类名 extends 父类名 implements 接口名1, 接口名2, 成员变量声明; 构造方法; 方法声明; ,10,class定义几点说明,修饰符:规定类的特征 访问控制符:只有public 、默认 非访问控制符:只有abstract 、final 类名:大写字母开头 extends: 只能接一个父类 implements:可实现多个接口 类体: 成员变量(也称域)+ 构造方法 + 方法,11,构造方法(constructor),问题的提出
5、 Java试图在每个对象一诞生时,就给它一确定的状态,但有时这种系统的缺省初值不合适;所以在创建一个新对象时,需用构造方法完成合法的初始化,使类内成员的初始化工作不依赖于外界完成。,12,构造方法说明,构造方法的方法名与类名完全相同 构造方法没有返回类型 构造方法不能被static、final、synchronized、abstract、native修饰 构造方法的主要作用是完成对类对象的初始化工作,可以初始化成员变量,也可以调用方法。 构造方法用new来调用:在创建一个类的新对象的同时,系统会自动调用该类的构造方法为新对象初始化,13,Java中的对象,对象的声明:引用型的变量被声明后,没有
6、初始化,就不指向任何对象 Point p1,p2; 对象的实例化: p1 = new Point(); 可写在同一条命令中 Point p4 = new Point(); Java中用new关键字创建对象,它有三个作用: 为对象实例分配空间,将对象的成员变量初始化,使其为变量的默认值。 调用构造方法,显式初始化对象的成员变量。 返回对象实例的引用,14,默认的构造方法,Java语言中,每个类都至少有一个构造方法; 如果类的定义者没有显式的定义任何构造方法,系统将自动提供一个默认的构造方法: 默认构造方法没有参数 默认构造方法没有方法体 Java类中,一旦类的定义者显式定义了一个或多个构造方法,
7、系统将不再提供默认的构造方法;,15,默认的构造方法,类的定义:public class Person private int age; public void setAge(int w) age = w; 相当于: public class Person private int age public Person() public void setAge(int w) age = w; 应用举例:public class Test public static void main(String args) Person d = new Person() ; d.setAge(120); ,16
8、,默认的构造方法,class Bush Bush(int i) Bush(double d) new Bush() /error 一旦定义了一个构造方法,缺省构造方法失效!,17,方法的重载,方法的重载:多个方法享有相同的名字,但是这些方法的参数列表必须不同,即: 或参数个数不同 参数类型不同 参数类型的顺序不同 此外:方法的返回类型可以不相同,方法的修饰符可以不相同。,18,方法的重载,举例: 要打印不同类型的数据,int, float, String,不需要定义不同名的方法:printInt(int); printFloat(float); printString(String) 利用方法
9、重载,只需要定义一个方法名: println(),接收不同的参数: println(int); println(float); println(String);,19,方法的重载,void sayHello() System.out.println(“Hello!My name is ”+name ); void sayHello(Person another) System.out.println(“Hello,”++”!My name is ”+name); ,20,方法的重载例子,Given the following code, which method dec
10、larations, when inserted at the indicated position, will not cause the program to fail compilation? public class TestOverload public long sum (long a, long b) return a+b; / insert new method decaration here A public int sum (int a, int b) return a+b; B public int sum (long a, long b) return 0; C pri
11、vate long sum ( long a, long b) return a+b; D public long sum (long a, int b) return a+b;,21,构造方法的重载,构造方法的重载:要求使用不同的参数个数、不同的参数类型、不同的参数类型顺序 构造对象时,根据参数的类型、个数、顺序,系统自动调用相应的构造方法。 class Person String name; int age; Person(String n, int a) name=n; age=a; Person(String n) name=n; age=-1; ,22,关键字this(1),Java
12、中为解决变量的命名冲突和不确定性问题,引入关键字“this”代表其所在方法的当前对象。 构造方法中指该方法所创建的新对象 普通方法中指调用该方法的对象,23,关键字this(2),public class ThisSample private int year; private int month; private int day; public ThisSample(int year,int month,int day) this.year = year; this.month = month; this.day = day; public void setYear(int year) th
13、is.year = year; public void setMonth(int m) month = m; public void setDay(int d) day = d; public void setting() this.setYear(2001); this.setMonth(9); setDay(11); /同this.setDay(11); ,24,this的使用:构造方法,构造方法中,还可以用this来调用另一个构造方法。 Class Person String name; int age; Person ( int age, String name) this.age=a
14、ge; =name; Person() this(0,” ”); . ,在构造方法中调用另一个构造方法,则这条语句必须放在第一句,25,构造方法 举例,public class Person private String name; private int age; private Date birthDate; public Person(String name, int age, Date d) = name; this.age = age; birthDate = d; 2 public Person(String name, int age) th
15、is(name, age, null); 3 public Person(String name, Date d) this(name, 30, d); 4 public Person(String name) this(name, 30); ,26,Ex1 课后练习,public class MyDate private int day = 12; private int month = 6; private int year = 1900; public MyDate(int y, int m, int d) year = y; month = m; day = d; public voi
16、d display() System.out.println(year + / + month + / +day); public static void main(String args) MyDate m; m = new MyDate(2001, 9, 22); m.display(); 为MyDate类分别编写几个构造方法(无参数、一个参数、两个参数、其他类型参数等)。 注意要使用关键字this 在main方法中分别使用多种参数构造MyDate类型的对象,分别使用display()方法输出构造结果,体会构造方法的重载。,27,编译单元,一个java源代码文件称之为一个编译单元。 一个编
17、译单元中只能有一个public类,该类名与文件名相同。编译单元中的其他类是该主public类的支撑类。 经过编译,编译单元中的每个类都产生一个 .class文件。,28,编译单元,Java语言的原程序代码的每个编译单元只能包含下列内容(注释除外): 一个包声名 (package) 一个或多个包的引入语句 (import) 一个或多个类的声明(class) 一个或多个接口的声明(interface),29,Java 包的概念(P141),包是由.class文件组成的集合:事实上就是一个文件夹,存放着多个.class文件(功能相关)。参见API。 为便于管理大型软件系统中数目众多的类,解决类的命名
18、冲突问题,Java引入包(package)机制,提供类的多重类命名空间。 包可以像目录结构一样可以有多层结构,以“.”分隔,如: java.awt.color 包名一般小写,30,包的构建:package语句,package语句作为Java源文件的第一条语句,且只能有一个package语句,指明该文件中定义的类所在的包。(若缺省该语句,则指定为无名包)。它的格式为: package pkg1.pkg2.pkg3; 举例:A.java Java编译器把包对应于文件系统的目录管理,31,包中java文件的编译、运行,使用集成开发环境:编译后在.java所在目录下生成“包”(对应的文件夹)。 在命令
19、行中:编译时采用如下方式: javac -d destpath Test.java 则编译器会自动在destpath目录下建立一个”包”子目录a,并将生成的.class文件都放到destpath/a下。 javac Test.java 则编译器会在当前目录下生成Test.class文件,再在适合位置(destpath目录)手动创建一个名为a(包名)的子目录,将Test.class复制到该p1目录下。 运行:java a.A .class文件的存放路径与package一致,32,包的引用:import语句,为使用定义在不同包中的Java类,需用import语句来引入所需要的类。 语法格式: im
20、port package1.package2. (classname |*); 应用举例: import p1.Test; /import p1.*; public class TestPackage public static void main(String args) Test t = new Test(); /Test类在p1包中定义 t.display(); Java编译器为所有的程序自动的引入包java.lang,33,import语句,/* A.java */ package a; public class A /* B.java */ package b; import a.*
21、; /import package a public class B A a; / access class A ,34,Java程序的编译说明,一个软件项目中有多个.java文件。如果一个类访问了另一个类,而另一个类所在的.java文件还没有被编译,则编译器根据 import语句指出的信息去寻找该.java文件,并编译它。 package语句指出生成.class文件的路径。 所以:必要的import语句 .java文件的存放位置与包的结构一致,35,JDK中主要的包介绍,java.lang-包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提
22、供常用功能。 java.awt-包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。 java.applet-包含applet运行所需的一些类。 -包含执行与网络相关的操作的类。 java.io-包含能提供多种输入/输出功能的类。 java.util-包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。,36,Ex2 课后练习,在Ex1的类定义文件MyDate.java中增加包声名语句,指定其所在包mypack。 编写应用程序文件Test.java ,要求引用MyDate类(添加import语句
23、),调用MyDate类的display()方法。 在Test.java中增加包的声明,指定其所在包testpack。 在不编译MyDate.java的情况下,尝试编译运行Test.java,体会包的声明与引用。,37,= 操作符,用来判别两边是否相等。 用“=”进行比较时,符号两边的数据类型必须一致(可自动转换的基本数据类型除外),否则编译出错; 当运算符两边是引用型时:必须指向同一对象,结果才为true。 Example1: Dimension a = new Dimension (5,10); Dimension b = a; Example2: boolean b = new int4 =new int 4 /b =? Example3: int x = 5; long y= 5L; System.out.println(x=y);,38,封装类 (wrapper class),针对八种基本定义相应的引用类型封装类,39,封装类用法举例,int i = 50
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大型履带吊拆卸与安装专项施工方案
- 幼儿园家长沟通工作日志模板
- 职业教育课程资源开发案例汇编
- 房屋转租合同范本与法律说明
- 2026年生物肥料行业创新研发及市场推广报告
- 教师专业发展年度培训方案
- 电子厂员工岗位职责与考核
- 小学二年级经典课文教学反思
- 应急预案工作程序(3篇)
- 教育行业应急预案(3篇)
- 马克思主义与当代课后习题答案
- 建筑工程施工质量控制论文9【论文】
- 二十届四中全会测试题及参考答案(第三套)超难
- 2025年事业单位面试心理素质测试模拟试卷及答案
- 2025-2030疫苗冷链物流体系建设标准与第三方服务市场机会报告
- 2025年江苏省事业单位招聘考试教师招聘体育学科专业知识试卷(秋季篇)
- 2025年中国橡胶粉改性沥青(AR)行业市场分析及投资价值评估前景预测报告
- 【完整版】2025年自考《马克思基本原理概论》真题及答案
- 胸外科围手术期护理指南
- 大数据中心建设项目标准与工程造价指标分析
- 河北省五个一名校联盟金太阳2025届高三上学期一轮收官验收-英语试卷(含答案)
评论
0/150
提交评论