第三章对象与类.ppt
《第三章对象与类.ppt》由会员分享,可在线阅读,更多相关《第三章对象与类.ppt(37页珍藏版)》请在三一文库上搜索。
1、第三章 对象与类,3.1 类与对象 3.2 定义类 3.3 成员变量的作用域 3.4 方法重载 3.5 创建对象 3.6 构造方法 3.7 this关键字 3.8 初始化问题 3.9 static 关键字 3.10 对象的清理 3.11 访问控制修饰符 3.12 具体隐藏实现 3.13 参数传递 3.14 总结,3.1 定义类,传统程序设计语言的不足 数据和对数据的操作相分离 面向对象设计的思想 什么是对象 一切都是对象 对象与类的关系 类是对象的模版,对象是类的实例,3.2 定义类,类是组成程序的基本单元,定义了自己的类就是定义了要使用的对象的类型。,例:定义一个汽车类: class Car
2、 int color; int door; int speed; void start() void brake() 声明一个汽车类的引用变量: Car myCar;,声明类的语法: 修饰符 class 类名称 /成员变量 /方法 ,Java基本数据类型,Java数据类型包括基本数据类型和引用类型,包装器类型把基本数据类型数据“包装”成对象,从 int类型创建一个Integer对象: int myInt; Integer myInteger = new Integer(myInt); 从包装对象中取出基本类型值: myInt = myInteger.intValue();,Java基本数据类型
3、,第一个Java程序,程序3.1 Rectangle.java class Rectangle int a,b; int getArea() return a*b; void locate(int x,int y) System.out.println(“The position s(“+x+“,“+y+“)“); public static void main(String args) Rectangle r1=new Rectangle(); r1.locate(3,4); r1.a=2; r1.b=3; int area=r1.getArea(); System.out.println(
4、“Area of r1 is:“+area); ,第一个Java程序,main方法是程序的入口 包含main方法的类是Java应用程序的主类 一个Java源文件可以包含多个类,但同一个Java源文件只有主类可以声明为public Java源文件的命名必须与主类同名,3.3成员变量的作用域,在Java中变量的作用域是由大括号组成的程序块决定 在不嵌套的程序块中可以多次声明相同变量 在嵌套的程序块中不允许重复声明同名的变量 声明在方法中的变量为局部变量,与实例变量重名的局部变量会覆盖实例变量,其作用域为整个方法体。 见程序3.2 TestScoping.java,作用域举例, int x= 1;
5、int y=2 /xy可用 / x可用y超出作用域 ,合法的声明: int x=1; int x=2; ,不合法的嵌套声明: int x=1; int x=2; ,3.4方法重载,方法重载(Overload)是指一个类中可以定义参数列表不同但名字相同的多个方法,调用时,会根据不同的参数列表来选择对应的方法 。,重载的方法名字必须相同 重载的方法参数必须不同 当一个重载方法被调用时,Java 用参数的类型和(或)数量来表明实际调用的重载方法的版本。每个重载方法的参数的类型和(或)数量必须是不同的。虽然每个重载方法可以有不同的返回 类型,但返回类型并不足以区分所使用的是哪个方法。当Java 调用一
6、个重载方法时,参数与调用参数匹配的方法被执行。 见程序3.3 TestOverload.java 程序3.4 TestOverload1.java,被重载的方法必须有不同的参数列表,前面例子区分重载方法的参数采用了或者数量不同,或者类型不同,参数顺序不同虽然也可以重载,但是容易产生歧义 。例:,程序3.5 TestOverload2.java public class TestOverload2 void print(int a,float b) System.out.println(“Print int a and float b: “ + a + “ “ + b); void print(
7、float a,int b) System.out.println(“Print float a and int b: “ + a + “ “ + b); public static void main(String args) TestOverload2 obj = new TestOverload2(); obj.print(1,2); ,3.5创建对象,先声名引用变量 Rectangle r1; 然后创建对象赋值给r1: r1= new rectangle(); 声明引用变量的同时产生一个对象赋给它: Rectangle r1=new Rectangle(); 引用变量r1“代表”了一个
8、矩形对象,我们就可以使用引用变量加句点形式访问对象的成员了,在Java中基本类型变量存储在栈的内存结构中 int x=10; boolean y=true;,引用型变量内储存着对象实例的地址 声明两个矩形类引用变量r1、r2 :Rectangle r1,r2; r1、r2没有指向任何对象实例,系统默认赋初值null,产生一个新对象实例并赋值给r1: r1= new rectangle(); r2=r1;,在java中字符串类型数据是按照对象来处理的 两种方式 显式和隐式创建 Java为了加快程序的执行速度,把隐式创建的字符串对象放在栈中一个特殊区域字符串池(String Pool)中,相同内容
9、的字符串对象只保留一份 。,String str1=new String(“Hello java!”); String str2=”Hello Java!”,程序3.6 TestString.java public class TestString public static void main(String args) String str1=new String(“Hello Java!“); String str2=str1; String str3=“Hello Java!“; String str4=“Hello Java!“; System.out.println(str1= =s
10、tr2); System.out.println(str1= =str3); System.out.println(str3= =str4); 输出结果: true false true,3.6构造方法,构造方法是创建对象时调用的特殊方法 方法名必须与要创建对象的类名相同 不允许声明返回类型,即使声明为void也是不正确的 如果类中并没有定义构造方法,Java会自动地给你添加一个无参的缺省构造方法 可以自定义重载的多个构造方法,在创建对象时使实例多样化。(重载) 例:程序3.7 Student.java,3.7 this关键字,public Student(int age ) System.o
11、ut.println(“Invoke constructor with age.“); age=age; ,以上构造方法中出现age=age的奇怪语句,this关键字用来解决这个问题。 this引用指向的是其本身所在方法的当前对象。以上构造方法若采用this关键字则修改为: public Student(int age ) System.out.println(“Invoke constructor with age.“); this.age=age; this.age=age意指把参数age的值赋给类成员变量age。,3.8初始化问题,如果程序员使用了缺省的构造方法并且没有在类中初始化成员变
12、量,创建对象时系统会对各种类型的成员变量按表3.3自动进行初始化赋予一个默认值。,用构造方法完成初始化,可以使用自定义的构造方法在方法体内初始化成员 可以在构造方法中使用this()调用其它构造方法以减少代码冗余 构造方法内this必须在第一行 只能调用一次this()不允许调用两次 this()只能在构造器中使用,其他成员方法不得调用。,class Student int age; String name; public Student() System.out.println(“Creating default student.“); System.out.println(“Default
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 对象
链接地址:https://www.31doc.com/p-3139010.html