zJava面向对象程序设计第4章_类与对象_免费下载.ppt_第1页
zJava面向对象程序设计第4章_类与对象_免费下载.ppt_第2页
zJava面向对象程序设计第4章_类与对象_免费下载.ppt_第3页
zJava面向对象程序设计第4章_类与对象_免费下载.ppt_第4页
zJava面向对象程序设计第4章_类与对象_免费下载.ppt_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

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

文档简介

1、Java 是面向对象的语言,所有Java程序都以类class为组织单元 关键字class定义自定义的数据类型,public class HelloWorld public static void main(String args) System.out.println(Hello World!); ,Java类模板,类将现实世界中的概念模拟到计算机程序中,public class 类名 /定义属性部分 属性1的类型 属性1; 属性2的类型 属性2; 属性n的类型 属性n; /定义方法部分 方法1; 方法2; 方法m; ,如何定义类,定义一个类的步骤 1、定义类名 2、编写类的属性 3、编写类的

2、方法,类示例2-1,3、在不同的学校,会感受到相同的环境和教学氛围,用类的思想输出中心信息,类示例2-2,public class School String schoolName;/学校名称 int classNumber;/教室数目 int labNumber;/机房数目 /定义学校的方法 public void showCenter() System.out.println(schoolName + “学生n + 配备: + classNumber + 教 + labNumber + 机); ,定义类的showCenter()方法, 用于输出类相关的信息,方法,成员变量,如何创建和使用对

3、象,使用对象的步骤: 创建对象 类名 对象名 = new 类名(); 引用对象成员:使用“.”进行以下操作 引用类的属性:对象名.属性 引用类的方法:对象名.方法名(),School center = new School();, = “黄山学院; /给name属性赋值 center.showCenter(); /调用showCenter()方法,public class InitialSchool public static void main(String args) School center = new School(); System.out.println(*

4、初始化成员变量前*); center. showCenter(); center.schoolName = “黄山学院; center.classNumber = 100; center.labNumber = 10; System.out.println(n*初始化成员变量后*); center.showCenter() ,创建和使用对象示例5-1,创建“黄山学院”对象,说一说看到什么效果?,说一说又看到什么效果?,创建和使用对象示例5-2,4、编写学生类,输出学生相关信息;编写教员类,输出教员相关信息,public class Student String name;/姓名 int age

5、;/年龄 String classNo;/班级 String hobby;/爱好 /输出信息方法 public void show() System.out.println(name + n年龄: + age + n就读于: + classNo + n爱好: + hobby); ,创建和使用对象示例5-3,成员变量,成员方法,public class InitialStudent public static void main(String args) Student student = new Student(); = 张浩; student.age = 10; s

6、tudent.classNo = S1班; student.hobby = 篮球; student.show(); ,创建对象,给每个属性赋值,调用方法,创建和使用对象示例5-4,5、一个景区根据游人的年龄收取不同价格的门票。请编写游人类,根据年龄段决定能够购买的门票价格并输出,public class Visitor String name;/姓名 int age;/年龄 /显示信息方法 public void show() Scanner input = new Scanner(System.in); while(!n.equals(name) if(age=18 ,创建和使用对象示例5-

7、5,成员方法,成员变量,import java.util.Scanner; public class InitialVistor public static void main(String args) Scanner input = new Scanner(System.in); Visitor v = new Visitor(); System.out.print(请输入姓名:); = input.next(); System.out.print(请输入年龄:); v.age = input.nextInt(); v.show(); ,创建对象,给每个属性赋值,调用方法,面向

8、对象(OO)的优点,与人类的思维习惯一致 把人类解决问题的思维过程转变为程序能够理解的过程 信息隐藏,提高了程序的可维护性和安全性 封装实现了模块化和信息隐藏 封装使得在对象外部不能随意访问对象的属性和方法 提高了程序的可重用性 一个类可以创建多个对象实例,增加了重用性,4.2.2 类体, 类声明之后的一对大括号“”,“”以及它们之间的内容称作类体,大括号之间的内容称作类体的内容。 类体的内容由两部分构:一部分是变量的声明,用来刻画属性;另一部分是方法的定义,用来刻画功能。,4.2.3 成员变量和局部变量,类体中变量声明部分所声明的变量被称作类的成员变量。在方法体中声明的变量和方法的参数被称作

9、局部变量。 1变量的类型:成员变量和局部变量的类型可以是Java中的任何一种数据类型,包括基本类型:整型、浮点型、字符型;引用类型:数组、对象和接口(对象和接口见后续内容)。 2变量的有效范围:成员变量在整个类内都有效,局部变量只在声明它的方法内有效。方法参数在整个方法内有效,方法内的局部变量从声明它的位置之后开始有效。 3实例变量与类变量:在声明成员变量时,用关键字static给予修饰的称作类变量,否则称作实例变量(类变量也称为static变量,静态变量)。 4成员变量的隐藏:如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效。 5编程风格 (1)一

10、行只声明一个变量。 (2)变量的名字符合标识符规定。 (3)变量名字见名知意,避免容易混淆的变量名字。,4.2.4 方法,方法的定义包括两部分:方法声明和方法体。一般格式为: 方法声明部分 方法体的内容 1方法声明 方法声明包括方法名和方法的返回类型,如: float area() 注:方法的返回类型、方法的参数、方法的名字 2方法体 方法声明之后的一对大括号“” ,“”以及之间的内容称作方法的方法体。方法体的内容包括局部变量的声明和Java语句。,为什么要用带参数的方法,工作原理,新鲜桃汁,新鲜苹果汁,新鲜梨汁,输出三种果汁,如何使用带参数的方法,定义带参数的方法 调用带参数的方法,publ

11、ic class Zhazhi public String zhazhi ( String fruit ) String juice = fruit + 汁; return juice; ,/*调用zhazhi方法*/ Zhazhi myZhazhi = new Zhazhi(); String myFruit = 苹果; String myJuice = myZhazhi.zhazhi(myFruit); System.out.println(myJuice);,参数列表: (数据类型 参数1,数据类型 参数2),调用方法,传递的参数要与参数列表一一对应,如何使用带参数的方法, 返回类型 (

12、) /方法的主体 ,该方法允许被访问调用的权限范围,方法返回值的类型,public class StudentsBiz String names = new String30; public void addName(String name) /增加学生姓名 public void showNames () /显示全部学生姓名 ,传送给方法的形参列表,一个形式参数,没有返回值,如何使用带参数的方法,public static void main(String args) StudentsBiz st = new StudentsBiz(); Scanner input = new Scanne

13、r(System.in); for(int i=0;i5;i+) System.out.print(请输入学生姓名:); String newName = input.next(); st.addName(newName); st.showNames(); ,实参的类型、数量、顺序 都要与形参一一对应,先实例化对象, 再使用方法,调用带参数的方法,对象名.方法名(实参1, 实参2,,实参n),实参列表,带两个参数的方法,可以设计一个方法来实现,通过传递两个参数(需要修改的姓名、新姓名)来实现,1、修改学生姓名,输入新、旧姓名,进行修改并显示是否修改成功,public class Student

14、sBiz String names = new String30; public boolean editName (String oldName,String newName) boolean find = false; / 是否找到并修改成功标识 / 循环数组,找到姓名为oldName的元素,修改为newName for(int i=0;inames.length;i+) if(namesi.equals(oldName) namesi = newName; find=true; break; return find; ,返回值类型,带有两个形参,返回结果:boolean类型,带两个参数的

15、方法2-2,public class TestModify public static void main(String args) System.out.print(n请输入要修改的学生姓名:); String oldname = input.next(); System.out.print(n请输入新的学生姓名:); String newname = input.next(); System.out.println(n*修改结果*); if( st.editName(oldname, newname) ) System.out.println(找到并修改成功!); else System.

16、out.println(没找到该学生!); st.showNames(); ,根据返回值进行处理,传递两个实参,带多个参数的方法,设计方法,通过传递三个参数(开始位置、结束位置,查找的姓名)来实现,2、指定查找区间,查找学生姓名并显示是否修改成功,public boolean searchName (int start,int end,String name) boolean find = false; / 是否找到标识 / 指定区间数组中,查找姓名 for(int i=start-1;iend;i+) if(namesi.equals(name) find=true; break; retu

17、rn find; ,返回值类型,带有三个形参,返回结果:boolean类型,带多个参数的方法,if(st.searchName(s,e,name) System.out.println(找到了!); else System.out.println(没找到该学生!); ,传递三个实参,/方法定义 public void addName(String name) /方法体 /方法调用 对象名.addName(String 张三);,调用方法时不能指定实参类型!,常见错误,对象名.addName(张三);,/方法定义 public boolean searchName(int start ,int

18、end ,String name) /方法体 /方法调用 String s=开始; int e=3; String name=张三; boolean flag=对象名. searchName(s ,e ,name);,形参和实参数据类型不一致!,常见错误,/方法定义 public boolean searchName(int start,int end,String name) /方法体 /方法调用 int s=1; int e=3; boolean flag= 对象名.searchName(s,e);,形参和实参数量不一致!,常见错误,/方法定义 public boolean searchN

19、ame(int start,int end,String name) /方法体 /方法调用 int s=1; int e=3; String name=张三; 对象名.searchName(s,e,name);,调用方法后没有对返回值作任何处理!,常见错误,数组类型的方法返回值,使用Arrays类提供的sort()方法实现 定义一个独立的方法来实现姓名排序,该方法的返回值为数组类型,1、编写方法,实现学生的姓名排序,public class StudentsBiz String names = new String5; / 学生姓名数组 public void inputNames() /接收

20、用户输入的5个学生姓名,存放于names中 /字符串数组作为返回值 public String getNames() Arrays.sort(names); return names; ,返回字符串数组,public class TestSort public static void main(String args) StudentsBiz st = new StudentsBiz(); st.inputNames(); String namesbysort =st.getNames(); System.out.println(*排序后*); for(int i =0;i namesbyso

21、rt.length;i+) if(namesbysort i!=null) System.out.print(namesbysort i+t); ,数组类型的方法返回值,调用方法,返回结果,处理返回结果,对象类型的参数,定义学生类,添加属性:三门课的成绩 定义学生成绩计算类,添加方法,传递对象参数 定义测试类,2、编写学生成绩计算类,计算学生平均分,public class Students /定义三门课成绩属性 float java=0; float database=0; float html=0; ,三门课成绩,public class Score /计算平均分,对象作为参数 publi

22、c float getAvg(Students stu) float avg=0; avg=(stu.java +stu.database +stu.html )/3; return avg; ,对象类型的参数,返回结果,对象类型的参数,public class TestScore public static void main(String args) Students stu=new Students(); Score sc=new Score(); float avg=0; stu.java=80; stu.database=95; stu.html=77; avg=sc.getAvg(

23、stu); System.out.println(该学生的平均分为:+avg); ,调用方法,传递参数,返回结果,对象类型的参数,public class TestScore public static void main(String args) Students stu=new Students(); Score sc=new Score(); float avg=0; stu.java=80; stu.database=95; stu.html=77; avg=sc.getAvg(stu); System.out.println(该学生的平均分为:+avg); ,public class

24、 Score /计算平均分,对象作为参数 public float getAvg(Students stu)float avg=0; avg=(stu.java +stu.database +stu.html )/3; return avg; ,main:stu,0 x2a486c,0,main:avg,84.0,getAvg:stu,0 x2a486c,0,getAvg:avg,84.0,省略内存分配,内存分配图,对象数组类型的参数,Students类中定义身高属性 Height类中定义方法,传递学生对象数组,求平均身高 测试类调用Height类的方法,3、计算学生的平均身高,public

25、class Height public float getAvgHeight( Students stu) float avgHeight=0; float all=0;/所有学生的总身高 int count=0;/学生计数 for(int i=0; istu.length; i+) if(stui.height != 0) all=all+stui.height; count+; avgHeight=all/count; return avgHeight; ,对象数组作为参数,public class TestHeight public static void main(String arg

26、s) Students stu = new Students5; Height h=new Height(); float avgheight=h.getAvgHeight(stu); System.out.println(平均身高:+avgheight+cm); ,对象数组类型的参数,调用方法,传递对象数组,总结,基本数据类型和引用数据类型作为方法参数,在传递时有什么不同之处? 画出在本章“计算学生平均分 ”问题中,程序执行时的内存分配过程图,public class TestScore public static void main(String args) Students stu=ne

27、w Students(); Score sc=new Score(); float avg=0; stu.java=80; stu.database=95; stu.html=77; avg=sc.getAvg(stu); System.out.println(该学生的平均分为:+avg); ,public class Score /计算平均分,对象作为参数 public float getAvg(Students stu)float avg=0; avg=(stu.java +stu.database +stu.html )/3; return avg; ,main:stu,0 x2a486

28、c,0,main:avg,84.0,getAvg:stu,0 x2a486c,0,getAvg:avg,84.0,省略内存分配,构造方法 3-1,对象初始化,Penguin pgn = new Penguin(); = qq; pgn.sex = Q仔;,class Penguin / 属性 /* 无参构造方法 */ public Penguin() name = qq; love = 20; sex = Q仔; System.out.println(执行构造方法); ,使用构造方法: Penguin pgn1 = new Penguin();,能否在创建对象的同时就完成赋值

29、?,构造方法,构造方法 3-2,构造方法,public 构造方法名( ) /初始化代码 ,与类名相同,没有返回值类型,public Penguin() name = qq; love = 20; sex = Q仔; System.out.println(执行构造方法); ,可以指定参数,构造方法 3-3,阅读代码,说出运行结果,并指出原因,class Penguin public void Penguin() health=10; sex=雄; System.out.println(执行构造方法); public void print() System.out.println(企鹅的名字是 +

30、 name + ,健康值是 + health + ,性别是 + sex); ,Penguin pgn3=new Penguin(); pgn3.print();,有返回值类型,不是构造方法,常见错误,请指出下面代码的错误,class Dog private String name = 旺财; / 昵称 private int health = 100; / 健康值 private int love = 0; / 亲密度 public void play(int n) int localv; health = health - n; System.out.println(name+ +local

31、v+ +health+ +love); public static void main(String args) Dog d=new Dog(); d.play(5); ,局部变量没有初始化,静态常量,static可以用来修饰属性、方法和代码块 static修饰的属性和方法称为类属性(类变量)、类方法 不使用static修饰的属性和方法,属于单个对象,通常称为实例属性(实例变量)、实例方法 static修饰的变量和方法可以通过类名和对象名访问,而不用static修饰的变量和方法只能通过对象名访问 final可以用来修饰属性、方法和类 用final修饰的变量成为常量,其值固定不变,Penguin

32、 pgn1 = new Penguin(); pgn1.sex = Penguin.SEX_MALE;,class Penguin static final String SEX_MALE=Q仔; static final String SEX_FEMALE=Q妹; ,Java中定义常量的语法,static void print() ,用类名调用:Dog.print();,使用static定义变量,使用static定义方法,可否这样赋值?,常见错误,请指出下面代码的错误,class Dog private String name = 旺财; / 昵称 private int health =

33、100; / 健康值 private int love = 0; / 亲密度 public void play(int n) static int localv=5; health = health - n; System.out.println(name+ +localv+ +health+ +love); public static void main(String args) Dog d=new Dog(); d.play(5); ,在方法里不可以定义static变量,方法重载,一个类是否可以有多个构造方法? 方法重载,指同一个类中多个方法: 方法名相同 参数列表不同,与返回值、访问修饰

34、符无关,为什么要使用封装,下面代码有什么问题? 如何解决上面设计的缺陷?,Dog d = new Dog(); d.health = 1000;,不合理的赋值,使用封装,什么是封装,面向对象三大特征之一封装 封装的概念 封装的好处,封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问,隐藏类的实现细节,只能通过规定方法访问数据,方便加入控制语句,方便修改实现,如何使用封装,封装的步骤,修改属性的可见性,创建getter/setter方法,在getter/setter方法中加入属性控制语句,设为private,用于属性的读写,对属性值的合法

35、性进行判断,class Dog private String name = 旺财; / 昵称 private int health = 100; / 健康值 private int love = 0; / 亲密度 private String strain = 拉布拉多犬; / 品种 public int getHealth() return health; public void setHealth (int health) if (health 100 | health 0) this.health = 40; System.out.println(健康值应该在0和100之间,默认值是40

36、); else this.health = health; / 其它getter/setter方法 ,this代表当前对象,1,2,2,3,this的用法,this关键字的用法 调用属性 调用方法 调用构造方法,this.health = 100; = 大黄;,this.print();,this();,如果使用,必须是构造方法中的第一条语句,this(小黑,100,100,雄);,为什么需要包,生活案例,文档分门别类,易于查找,不同内容的文档可以放在不同的 袋子中,拥有相同的名字,避免冲突,易于管理,为什么需要包,树形文件系统 使用目录解决文件同名冲突问题 如何存放两个同

37、名的类而不冲突?,包,包解决类的同名问题,允许类组成较小的单元(类似 文件夹),易于找到和使用相 应的文件,防止命名冲突,更好的保护类、属 性和方法,如何创建包,package cn.jbit.classandobject; /声明包 public class AccpSchool / public String toString() / ,包名,使用package声明包, 以分号结尾,如果有包的声明,一定 作为Java源代码的第一条 语句,包命名规范,包名由小写字母组成,不能以圆点开头或结尾 包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名。如:域名 包名后续部分依不同机构内部的规范不

38、同而不同,package mypackage;,package net.javagroup.mypackage;,package net.javagroup.research.powerproject;,部门名,项目名,package .mypackage; ,用Eclipse 创建包,使用Eclipse创建包的两种方法: 分别创建包和类: 创建项目创建包创建类 创建类的过程中创建类所在的包 创建项目创建包和类,包与目录的关系,创建好的包和Java源文件是如何存储的? 创建包cn.jbit.classandobject ,即创建了目录结构:cnjbitclassandobject,cn,jbi

39、t,classandobject,AccpSchool.java,HelloAccp.java,如何导入包,为了使用不在同一包中的类,需要在Java程序中使用import关键字导入这个类,import java.util.*; /导入java.util包中所有类 import cn.jbit.classandobject.AccpSchool; /导入指定包中指定类,关键字import并不陌生,import 包名. 类名;,1、系统包:java.util 2、自定义包:cn.jbit.classandobject,*: 指包中的所有类 AccpSchool :指包中的AccpSchool类,小

40、结,AccpSchool.java位于cn.jbit.classandobject包中,HelloAccp.java位于demo包中,下面程序空缺部分需要填入代码吗?如果需要,是什么?,/添加代码2 /添加代码3 public class HelloAccp public static void main(String args) AccpSchool center = new AccpSchool(); center.showMessage(); ,/添加代码1 public class AccpSchool public void showMessage() System.out.prin

41、tln(“这是上海Accp中心。); ,package cn.jbit.classandobject;,package demo;,import cn.jbit.classandobject.*;,声明包的含义: 声明当前类所处的位置,导入包的含义: 声明在当前类中要使用到的 别的类所处的位置,练习模拟账户查询,实现存取款,需求说明: 模拟银行账户业务,进行余额查询,实现存款和取款,完成时间:20分钟,4.2.5 方法重载,方法重载的意思是:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。,4.2.6 构造方法,构造方法是一种特殊方

42、法,它的名字必须与它所在的类的名字完全相同,而且没有类型,构造方法也可以重载。,4.2.7 类方法和实例方法,方法声明时,方法类型前面不加关键字static修饰的是实例方法、加static修饰的是类方法(静态方法)。,4.2.8 几个值得注意的问题,1对成员变量的操作只能放在方法中,方法可以对成员变量和该方法体中声明的局部变量进行操作。 2需要注意的是:实例方法既能对类变量操作也能对实例变量操作,而类方法只能对类变量进行操作。 3一个类中的方法可以互相调用,实例方法可以调用该类中的其它方法;类中的类方法只能调用该类的类方法,不能调用实例方法。,4.4 参数传值 4.4.1 基本数据类型参数的传

43、值,对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别 。 例4-4,4.4.2 引用类型参数的传值,当参数是引用类型时,“传值”传递的是变量中存放的“引用”,而不是变量所引用的实体。 例4-5,4.4.3 可变参数,可变参数是指在声明方法时不给出参数列表中从某项直至最后一项参数的名字和个数,但这些参数的类型必须相同。可变参数使用“”表示若干个参数,这些参数的类型必须相同,最后一个参数必须是参数列表中的最后一个参数。 例如: public void f(int . x) 例4-6,4.4.4 有理数的类封装,面向对象编程核心思想之一就是将数据和对数据的操作封装在一起。 1Ra

44、tional(有理数)类 2用Rational对象做运算 Rational.java MainClass.java,4.5 对象的组合,一个类可以把对象作为自己的成员变量,如果用这样的类创建对象,那么该对象中就会有其它对象,也就是说该对象将其他对象作为自己的组成部分,或者说该对象是由几个对象组合而成。 例4-7,4.6 static关键字,4.6.1 实例变量和类变量的区别,如果类中有类变量,那么所有对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其它对象的这个类变量。也就是说对象共享类变量。 例4-8,4.6.2 实例方法和类方法的区别,当用类创建对象后,类中的实例

45、方法才分配入口地址,从而实例方法可以被类创建的任何对象调用执行。 对于类中的类方法,在该类被加载到内存时,就分配了相应的入口地址。 例4-9,4.7 this 关键字,this是Java的一个关键字,表示某个对象。this可以出现在实例方法和构造方法中,但不可以出现在类方法中。,4.7.1 在构造方法中使用this,this关键字出现在类的构造方法中时,代表使用该构造方法所创建的对象。 例4-10,4.7.2 在实例方法中使用this,当this关键字出现实例方法中时,代表正在调用该方法的当前对象。 当实例成员变量在实例方法中出现时,默认的格式是:this.成员变量。 当static成员变量在

46、实例方法中出现时,默认的格式是:类名.成员变量。,4.8 包,包是Java语言中有效地管理类的一个机制。 包名的目的是有效的区分名字相同的类。,4.8.1 包语句,通过关键字package声明包语句。 package语句作为Java源文件的第一条语句,为该源文件中声明的类指定包名。 package语句的一般格式为: package 包名;,4.8.2 有包名的类的存储目录,程序如果使用了包语句,例如: package tom.jiafei; 那么存储文件的目录结构中必须包含有如下的结构 tomjiafei 如: c:1000tomjiafei 并且要将源文件编译得到的类的字节码文件保存在目录c

47、:1000tomjiafei中(源文件可以任意存放)。,4.8.3 运行有包名的主类,如果主类的包名是tom.jiafei,那么主类的字节码一定存放在tomjiefei目录中,运行时必须到tomjiefei的上一层(即tom的父目录)目录中去运行主类。 假设tomjiefei的上一层目录是1000,那么,必须如下格式来运行: C:1000java tom.jiafei.主类名 注:主类名是:“包名.主类名” 例4-11,4.9 import 语句,一个类可能需要另一个类声明的对象作为自己的成员或方法中的局部变量,如果这两个类在同一个包中,当然没有问题。 如果一个类想要使用的那个类和它不在一个包

48、中,要使用import语句完成使命。,4.9.1 引入类库中的类,如果用户需要类库中的类就必须使用import语句,如: import java.until.Date; 例4-12,4.9.2 引入自定义包中的类,用户程序可以使用tom.jiafei包中的类,即使用非类库中有包名的类,也要使用import语句,如: import tom.jiafei.*; 例4-13, 例4-14,4.9.3 使用无包名的类,如果一个类想使用无名包中的类,只要将这个无包名的类的字节码和当前类保存在同一目录中即可。 例4-15,4.9.4 避免类名混淆,1区分无包名和有包名的类 如果想同时使用tom.jiafe

49、i包中的A类和无名包中的A类,就不能省略包名,例如: A a1=new A(); tom.jiafei.A a2=new tom.jiafei.A(); 2区分有包名的类 如果一个源文件引入了两个包中同名的类,那么在使用该类时,不允许省略包名,比如: tom.jiafei.A bird=new tom.jiafei.A(); .A goat=new .A();,4.10 访问权限,访问限制修饰符有private、protected和public,都是Java的关键字,用来修饰成员变量或方法。,4.10.1 私有变量和私有方法,用关键字private修饰的成员变量和方法称为私有变量和私有方法。

50、对于私有成员变量或方法,只有在本类中创建该类的对象时,这个对象才能访问自己的私有成员变量和类中的私有方法。 例4-16,例4-17,4.10.2 共有变量和共有方法,用public修饰的成员变量和方法被称为共有变量和共有方法 。 我们在任何一个类中用类Tom 创建了一个对象后,该对象能访问自己的public变量和类中的public方法(也可以通过类名来操作成员变量、方法) 。,4.10.3 友好变量和友好方法,当在另外一个类中用类Tom 创建了一个对象后,如果这个类与Tom类在同一个包中,那么该对象能访问自己的友好变量和友好方法。 在任何一个与Tom同一包中的类中,也可以通过Tom类的类名访问

51、Tom类的类友好成员变量和类友好方法。,4.10.4 受保护的成员变量和方法,用protected修饰的成员变量和方法被称为受保护的成员变量和受保护的方法 。,4.10.5 public类与友好类,类声明时,如果在关键字class前面加上public关键字,就称这样的类是一个public 类 。 可以在任何另外一个类中,使用public类创建对象。 如果一个类不加public修饰,这样的类被称作友好类。 在另外一个类中使用友好类创建对象时,要保证它们是在同一包中。,4.11 基本类型的类包装,Java的基本数据类型包括:byte、int、short、long、float、double、char

52、。 Java提供了基本数据类型相关的类,实现了对基本数据类型的封装。 这些类分别是:Byte、Integer、Short、Long、Float、Double和Character类。这些类在java.lang包中。,4.11.1 Double和Float类,Double类和Float类实现了对double和float基本型数据的类包装。 Double类的构造方法:Double(double num) Float类的构造方法: Float(float num) Double对象调用doubleValue()方法可以返回该对象含有的double型数据。 Float对象调用floatValue()方法

53、可以返回该对象含有的float型数据。,4.11.2 Byte、Short 、Integer、Long类,上述个类的构造方法分别 : Byte(byte num) Short(short num) Integer(int num) Long(long num) Byte、Short、Integer和Long对象分别调用 byteValue ()、shortValue()、intValue()和longValue ()方法返回该对象含有的基本型数据。,4.11.3 Character类,Character类实现了对char基本型数据的类包装。 Character类的构造方法:Character(char c) Character类中的一些常用类方法: public static boolean isDigit(char ch) 如果ch是数字字符方法返回 true,否则返回false。 public static boolean isLetter(char ch) 如果ch是字母方法返回 true,否则返回false。 public static boolean isLetterOrDigit(char ch) 如果ch是数字字符或字母方法返回 true,否则返回fals

温馨提示

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

评论

0/150

提交评论