Java类基础 构造方法 封装类 对象的使用 免费 课堂 PPT_第1页
Java类基础 构造方法 封装类 对象的使用 免费 课堂 PPT_第2页
Java类基础 构造方法 封装类 对象的使用 免费 课堂 PPT_第3页
Java类基础 构造方法 封装类 对象的使用 免费 课堂 PPT_第4页
Java类基础 构造方法 封装类 对象的使用 免费 课堂 PPT_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二讲第二讲 JavaJava类基础类基础 JavaJava类类l类是类是数据数据和和对数据操作对数据操作的封装体的封装体l类中的数据称为类中的数据称为成员变量成员变量(属性属性),类中对,类中对数据的操作称为数据的操作称为成员方法成员方法,成员变量和,成员变量和成员方法统称为成员方法统称为类的成员类的成员。l类具有封装性、继承性、和多态性类具有封装性、继承性、和多态性类的定义类的定义* class * * * public class Project 声明成员变量声明成员变量* = public class Project private String proj_code = “”; pri

2、vate String proj_name = “”; 构造方法构造方法Java中的每个类都有构造方法,中的每个类都有构造方法,构造方法具有和类名相同的名称构造方法具有和类名相同的名称,而且不返回任何数据类型。而且不返回任何数据类型。构造方法一般对成员变量赋构造方法一般对成员变量赋一些初值;一些初值;如果一个类没有声明构造如果一个类没有声明构造方法,方法,JavaJava自动为该类生成一个默认的无参的自动为该类生成一个默认的无参的构造方法构造方法,并且该,并且该默认默认构造方法的内容为空构造方法的内容为空。即,即,Java类可以通过两种方式获得构类可以通过两种方式获得构造方法造方法 使用系统默

3、认的无参构造方法使用系统默认的无参构造方法 显式定义一个或多个构造方法显式定义一个或多个构造方法一旦显式定义了构造方法,系统不再提供默认构造方法一旦显式定义了构造方法,系统不再提供默认构造方法一个类可以有多个构造方法,根据参数的不同决定执行哪一个一个类可以有多个构造方法,根据参数的不同决定执行哪一个默认的构造方法默认的构造方法public class Project private String proj_code = “”; private String proj_name = “”; /public Project() 声明成员方法声明成员方法public class Project pr

4、ivate String proj_code = “”; private String proj_name = “”; public void setName(String name) proj_name=name; public String getName() return proj_name; public class Project private String proj_code = “”; private String proj_name = “”; public Project() public void setName(String name) proj_name=name;

5、public String getName() return proj_name; lEncapsulationl类的属性通常定义为私有属性类的属性通常定义为私有属性(private),主要是为了,主要是为了保证程序逻辑的正确性。也就是说,如果要访问该对保证程序逻辑的正确性。也就是说,如果要访问该对象的属性或者对其进行操作,必须通过相应的方法才象的属性或者对其进行操作,必须通过相应的方法才能访问,这些方法又分为能访问,这些方法又分为set方法方法(setters)和和get方法方法(getters) 。这通常称为。这通常称为Information Hiding,也称为也称为封装。封装。l可以保

6、证程序逻辑的正确性可以保证程序逻辑的正确性l可以增加程序的可维护性可以增加程序的可维护性l8种种基本数据类型基本数据类型 int long short boolean char double float bytel除除此此以外的数据类型称为以外的数据类型称为引用类型引用类型l引用类型数据以对象的形式存在引用类型数据以对象的形式存在l引用类型变量的值是某个对象的句柄引用类型变量的值是某个对象的句柄( (对象在内存中的对象在内存中的地址地址) ),而不是对象本身,而不是对象本身l声明引用类型变量时,系统只为该变量分配引用空间声明引用类型变量时,系统只为该变量分配引用空间,并未创建一个具体的对象,并

7、未创建一个具体的对象l属性变量:在方法体外定义的变量,只要对象存在,属性变量:在方法体外定义的变量,只要对象存在,其属性变量就存在其属性变量就存在l局部变量:在方法体内定义的变量,也称为局部变量:在方法体内定义的变量,也称为stack variable,方法执行时存在,方法执行时存在,方法执行完毕后消失方法执行完毕后消失l局部变量在使用前必须进行初始化局部变量在使用前必须进行初始化,而属性变量可以,而属性变量可以不需要显式进行初始化,因为在创建对象时会进行默不需要显式进行初始化,因为在创建对象时会进行默认的初始化。认的初始化。对象的使用对象的使用1.声明类型声明类型 2.实例化对象实例化对象

8、3.访问对象的成员访问对象的成员1.声明类型声明类型 Project proj;2.实例化对象实例化对象 proj = new Project();或者或者 Project proj = new Project();3.访问对象的成员访问对象的成员 proj.setName(“XML数据集成系统关键技术的研究数据集成系统关键技术的研究”);示示 例例 1public class Project private String proj_code = “”; private String proj_name = “”; public void setName(String name) proj_n

9、ame=name; public String getName() return proj_name; public class Test public static void main(String args) Project proj = new Project(); proj.setName(“XML数据集成系统关键技术的研究数据集成系统关键技术的研究”); System.out.println(“Project:” + proj.getName(); 示示 例例 2public class MyDate private int day = 12; private int month =

10、 6; private int year = 1900; public Mydate(int d, int m, int y) year = y; month = m; day = d; public void display() System.out.println(year + / + month + / +day); public static void main(String args) MyDate m; m = new MyDate(22, 9, 2001); m.display(); l为引用类型变量分配引用空间 MyDate m;l创建新对象-首先为新对象分配内存空间,并进行属

11、性(实例变量)的默认初始化默认初始化new MyDate(22, 9, 2001);nullmnullm000daymonthyearlJava引用类型成员变量默认初始化原则引用类型成员变量默认初始化原则成员变量类型成员变量类型 取值取值 byte0 short0 int 0 long0L charu0000 float0.0F double0.0D booleanfalse 所有引用类型所有引用类型null l进行属性进行属性( (成员变量成员变量) )的显式初始化,显式初始化取值的显式初始化,显式初始化取值来自于类的定义中属性声明部分来自于类的定义中属性声明部分private int da

12、y = 12; private int month = 6; private int year = 1900;nullm1261900daymonthyearl执行构造方法执行构造方法public Mydate(int y, int m, int d) year = y; month = m; day = d; nullm2292001daymonthyear0 x3a478bm2292001daymonthyear0 x3a478bl为引用类型变量为引用类型变量m m赋值赋值m = new MyDate(22, 9, 2001);思思 考考 1public class Project pri

13、vate String proj_code = “”; private String proj_name = “”; public Project(String code, String name) proj_code=code; proj_name=name; public void setName(String name) proj_name=name; public class Test public static void main(String args) Project proj = new Project(); proj.setName(“XML数据集成系统关键技术的研究数据集成

14、系统关键技术的研究”); 思思 考考 2public class Test public static void main(String args) MyDate d1 = new MyDate(1, 1, 2000); d1.display(); MyDate d2 = d1; d2.setYear(2009); d1.display(); d2.display(); l任何程序设计语言,都是由语言规范和一系列开发库组成的。如标准C,除了语言规范外,还有很多函数库;MS Visual C+更是提供了庞大的APIs和MFC。lJava语言也不例外,也是由Java语言规范和Java开发包组成的。

15、l学习任何程序设计语言,都是要从这两方面着手,尤其是要能够熟练地使用后者。Java语言Java语言基本元素Java数据类型Java语言结构Java控制语句Java类定义规范Java数组Java开发类库组成语言规范语言规范开发类包开发类包Java开发类库开发类库 Java提供了丰富的标准类来帮助程序设计者更方便快捷地编写程序,这些标准类组成了类包,主要有:java.lang java.awtjava.applet java.awt.imagejava.io java.util 除了java.lang之外,其余类包都不是java语言所必须的。Java开发类库开发类库lLanguagejava.la

16、ng构成Java语言核心的类lUtilitiesjava.util提供实用的数据结构lI/Ojava.io提供多种类型的输出/输出lMathjava.math提供任意精度的整数和浮点数运算lAWT java.awt用户接口设计和事件处理lSwingjavax.swing提供全Java的,在任何平台上表现都相同的轻量级构件lBeansjava.beans 用于开发JavaBeans的类lSQLjava.sql 提供对数据库中数据的访问和处理lN 支持开发网络应用的类Java开发类库开发类库ljava.lang 本类包中包含了各种定义java语言时必须的类,任何java程序都将自动引入这个包。其中

17、的类包括: Object类:java中最原始、最重要的类,每个java类都是它的子类,它实现了每个类都必须具有的基本方法。 基本类型包装器:Boolean, Character,Integer等 String类:字符串类 执行线程:类Thread, ThreadGroup, 接口Runable。 异常和错误:类Exception, Error, 接口Throwable 运行环境:可以通过类Runtime和System访问外部系统环境。System类的两个常用功能就是访问标准输入/输出流和错误流、退出程序。Java开发类库开发类库ljava.awt 本类包是各种窗口环境的统一界面(AWT代表Ab

18、stract Windows Toolkit,即抽象窗口工具包),其中的类使得创建诸如窗口、菜单、滚动条、文本区、按钮以及复选框等图形用户界面(GUI)的元素变得非常容易ljavax.swing Swing是第二代GUI开发工具集, AWT采用了与特定平台相关的实现,而绝大多数Swing组件却不是. Swing是构筑在AWT上层的一组GUI组件的集合,为保证可移植性,它完全用Java语言编写.和AWT相比,Swing提供了更完整的组件,引入了许多新的特性和能力JavaJava程序结构程序结构lJava程序结构程序结构 package语句:语句:零个或多个,必须放在文件开始零个或多个,必须放在文

19、件开始 import语句:语句:零个或多个,必须放在所有类定义之前零个或多个,必须放在所有类定义之前 public ClassDefinition:零个或一个零个或一个 ClassDefinition:零个或多个零个或多个 InterfaceDefinition:零个或多个零个或多个l类定义:定义程序所需的类及接口,包括其内部的变量类定义:定义程序所需的类及接口,包括其内部的变量、方法等。、方法等。l一个源文件中至多只能有一个一个源文件中至多只能有一个public的的class声明声明l源文件名必须和它中定义的源文件名必须和它中定义的public的类名相同的类名相同封装类封装类Java 编程语

20、言提供编程语言提供 wrapper 类来操作作为对象的原类来操作作为对象的原始数据元素。始数据元素。每个每个 Java 原始数据类型在原始数据类型在 java.lang 包中具有相包中具有相应的应的 wrapper 类。类。 使用使用 wrapper 类的示例:类的示例:int pInt = 420;Integer wInt = new Integer(pInt); / this is called boxingint p2 = wIValue(); / this is called unboxinglpubliclprotectedl缺省缺省lprivate数组数组l数组由一组相

21、同类型的元素构成数组由一组相同类型的元素构成l元素的个数称为数组的长度元素的个数称为数组的长度,通过数组下通过数组下标访问元素标访问元素,下标下标0代表第一个元素代表第一个元素l数组是一个对象数组是一个对象,数组类型属于引用数据数组类型属于引用数据类型类型.数组的申明和创建数组的申明和创建l数组的申明数组的申明int a;或或int a;Point p;或或Point p;l数组对象必须通过数组对象必须通过new关键字创建关键字创建.数组数组1 1 (内存状态内存状态?)public int createArray()int a = new int10;for(int i=0; ia.leng

22、th; i+)ai = i*10;return a; /注意返回类型注意返回类型public static void main(String args) int a = createArray(); for(int i=0; ia.length; i+) System.out.println(“a“ + i + “=” + ai); 数组数组2 2 (内存状态内存状态?)public Point createArray()Point p = new Point10; /创建数组对象创建数组对象for(int i=0; ip.length; i+)pi = new Point(i, i*10);

23、 /创建创建Point对象对象return p; /注意返回类型注意返回类型数组的初始化数组的初始化 int a = 1, 2, 3, 4, 5; String users = “John”,“Mary”;Point p = new Point(1,1),new Point(2,2) ;class MyDate private int day;private int month;private int year;public MyDate(int d,int m,int y)day = d; month = m; year = y;public void setDay(int d) day =

24、 d; public void setMonth(int m) month = m; public void setYear(int y) year = y; public int getDay() return day; public int getMonth() return month; public int getYear() return year;public void display() System.out.println(day + - + month + - + year);public class Examplepublic static void main(String

25、 args)Example ex = new Example();int date = 9;MyDate d1= new MyDate(7,7,1970);MyDate d2= new MyDate(1,1,2000); ex.change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date= + date);d1.display();d2.display();public void change1(int i)i = 1234;public void change2(MyDate b)b = new MyDate(22,2

26、,2004);public void change3(MyDate b)b.setDay(22);main程序开始执行时内存状态栈内存堆内存public class Examplepublic static void main(String args)Example ex = new Example();int date = 9;BirthDate d1= new BirthDate(7,7,1970);BirthDate d2= new BirthDate(1,1,2000); ex.change1(date);ex.change2(d1);ex.change3(d2);System.out

27、.println(date= + date);d1.display();d2.display();public void change1(int i)i = 1234;public void change2(BirthDate b)b = new BirthDate(22,2,2004);public void change3(BirthDate b)b.setDay(22);main栈内存堆内存public class Examplepublic static void main(String args)Example ex = new Example();int date = 9;Birt

28、hDate d1= new BirthDate(7,7,1970);BirthDate d2= new BirthDate(1,1,2000); ex.change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date= + date);d1.display();d2.display();public void change1(int i)i = 1234;public void change2(BirthDate b)b = new BirthDate(22,2,2004);public void change3(Birth

29、Date b)b.setDay(22);处内存状态1109259587934exd1354752d2197077200011datemain栈内存堆内存public class Examplepublic static void main(String args)Example ex = new Example();int date = 9;BirthDate d1= new BirthDate(7,7,1970);BirthDate d2= new BirthDate(1,1,2000); ex.change1(date);ex.change2(d1);ex.change3(d2);Syst

30、em.out.println(date= + date);d1.display();d2.display();public void change1(int i) i = 1234;public void change2(BirthDate b)b = new BirthDate(22,2,2004);public void change3(BirthDate b)b.setDay(22);处内存状态1109259587934exdated1354752d21970772000119ichange1main栈内存堆内存public class Examplepublic static void

31、 main(String args)Example ex = new Example();int date = 9;BirthDate d1= new BirthDate(7,7,1970);BirthDate d2= new BirthDate(1,1,2000); ex.change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date= + date);d1.display();d2.display();public void change1(int i)i = 1234; public void change2(Bir

32、thDate b)b = new BirthDate(22,2,2004);public void change3(BirthDate b)b.setDay(22);处内存状态1109259587934exdated1354752d21970772000111234ichange1main栈内存堆内存public class Examplepublic static void main(String args)Example ex = new Example();int date = 9;BirthDate d1= new BirthDate(7,7,1970);BirthDate d2= n

33、ew BirthDate(1,1,2000); ex.change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date= + date);d1.display();d2.display();public void change1(int i)i = 1234; public void change2(BirthDate b)b = new BirthDate(22,2,2004);public void change3(BirthDate b)b.setDay(22);处内存状态1109259587934exdated135

34、4752d2197077200011main栈内存堆内存public class Examplepublic static void main(String args)Example ex = new Example();int date = 9;BirthDate d1= new BirthDate(7,7,1970);BirthDate d2= new BirthDate(1,1,2000); ex.change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date= + date);d1.display();d2.dis

35、play();public void change1(int i)i = 1234; public void change2(BirthDate b) b = new BirthDate(22,2,2004);public void change3(BirthDate b)b.setDay(22);处内存状态1109259587934exdated1354752d2197077200011587934bchange2main栈内存堆内存public class Examplepublic static void main(String args)Example ex = new Example

36、();int date = 9;BirthDate d1= new BirthDate(7,7,1970);BirthDate d2= new BirthDate(1,1,2000); ex.change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date= + date);d1.display();d2.display();public void change1(int i)i = 1234; public void change2(BirthDate b) b = new BirthDate(22,2,2004); pu

37、blic void change3(BirthDate b)b.setDay(22);处内存状态1109259587934exdated1354752d2197077200011666888bchange22222004main栈内存堆内存public class Examplepublic static void main(String args)Example ex = new Example();int date = 9;BirthDate d1= new BirthDate(7,7,1970);BirthDate d2= new BirthDate(1,1,2000); ex.chan

38、ge1(date);ex.change2(d1);ex.change3(d2);System.out.println(date= + date);d1.display();d2.display();public void change1(int i)i = 1234; public void change2(BirthDate b)b = new BirthDate(22,2,2004);public void change3(BirthDate b)b.setDay(22);处内存状态1109259587934exdated1354752d2197077200011main栈内存堆内存public class Examplepublic static void main(String args)Example ex = new Example();int date = 9;BirthDate d1= new BirthDate(7,7,1970);BirthDate d2= new BirthDate(1,1,200

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论