《对象和类》PPT课件.ppt_第1页
《对象和类》PPT课件.ppt_第2页
《对象和类》PPT课件.ppt_第3页
《对象和类》PPT课件.ppt_第4页
《对象和类》PPT课件.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

8.1 引言 8.2 定义对象的类 8.4 构造方法 8.5 通过引用变量访问对象 8.6 使用java中的类 8.7 静态变量、常量、静态方法 8.8 可见性修饰符,8.9 数据域封装 补充:不可变对象和类 8.10 对象引用作为参数 补充:变量的作用域 补充:关键字this 8.11 对象数组,第8章 对象和类,8.1 引言,面向对象的程序设计 与结构化程序设计方法相比,OO更符合人类认识现实世界的思维方式 已成为程序设计的主流方向 涉及的主要概念 抽象 封装 继承 多态,第11章,第8,10章,所有对象的抽象,是类。类是模板。 对象是类的具体实例( instance,实例化 instantiation) 实例变量 实例方法,8.2 定义对象的类,OOP,8.3 举例:定义类和创建对象,class Circle private double r; public void setR(double x) r = x; public double getArea() return Math.PI*r*r; ,class TestCircle public static void main(String s) Circle c1 = new Circle(); Circle c2 = new Circle(); c1.setR(1); c2.setR(2); System.out.println(c1.getArea(); System.out.println(c2.getArea(); ,8.4 使用构造方法构造对象,构造方法 一种和类同名的特殊方法 用来初始化对象 Java中的每个类都有构造方法,用来初始化该类的一个新的对象 没有定义构造方法的类,系统自动提供默认的构造方法,构造方法的特点 方法名与类名相同 没有返回类型,修饰符void也不能有。如果有,编译器认为它是普通方法,而非构造方法 通常被声明为公有的(public) 可以有任意多个参数 主要作用是完成对象的初始化工作 不能在程序中显式的调用 在生成一个对象时,系统会自动调用该类的构造方法为新生成的对象进行初始化 没有定义构造方法的类,系统自动提供默认的构造方法,系统提供的默认构造方法 如果在类的声明中没有声明任何构造方法,则Java编译器会提供一个默认的构造方法 默认的构造方法没有参数,其方法体为空 使用默认的构造方法初始化对象时,如果在类声明中没有给实例变量赋初值,则对象的属性值为零或空,声明一个银行帐号类及测试代码 class BankAccount String ownerName; int accountNumber = 2012; float balance; public class BankTester public static void main(String args) BankAccount myAccount = new BankAccount(); System.out.println(“ownerName=“ + myAccount.ownerName); System.out.println(“accountNumber=“ +myAccount.accountNumber); System.out.println(“balance=“ + myAccount.balance); ,运行结果 ownerName=null accountNumber=2012 balance=0.0,自定义构造方法与方法重载 可在生成对象时给构造方法传送初始值,使用希望的值给对象初始化 构造方法可以被重载,构造方法的重载和方法的重载一致 一个类中有两个及以上同名的方法,但参数表不同,这种情况就被称为方法重载。在方法调用时,Java可以通过参数列表的不同来辨别应调用哪一个方法,Class Circle double radius=1.0; Circle() Circle(double newRadius) radius=newRadius; double getArea() return radius*radius*Math.PI ,public class Test public static void main() Circle c=new Circle(); Circle d=new Circle(2.0); ,自定义无参的构造方法 无参的构造方法对其子类的声明很重要。如果在一个类中不存在无参的构造方法,则要求其子类声明时必须声明构造方法,否则在子类对象的初始化时会出错 在声明构造方法时,好的声明习惯是 不声明任何构造方法 如果声明,至少声明一个无参构造方法,构建一个Bush类,有两个有参数的构造方法 class Bush Bush(int i) Bush(double d) 如果写:new Bush(); 编译器将要告诉你找不到对应的构造方法 说明 用户在进行类声明时,如果没有声明任何构造方法,系统会赋给此类一个默认(无参)的构造方法。但是,只要用户声明了构造方法,即使没有声明无参的构造方法,系统也不再赋默认的构造方法,记住一点:在构造子类时,一定会显式或隐式地调用到父类的构造方法。,class A public A() / 1:无参数构造方法。 public A(String s) / 2:有参构造方法 class B extends A public B(String s) super(s); / 3.显式调用父类的构造方法 ,如果1和3都去掉,编译会不会报错?,8.5 通过引用变量访问对象,8.5.1 引用变量和引用类型,类名 对象引用变量名; 对象引用变量名=new 类名();,Class Circle double radius=1.0; Circle() Circle(double newRadius) radius=newRadius; double getArea() return radius*radius*Math.PI ,public class Test public static void main() Circle c=new Circle(); Circle d=new Circle(2.0); ,8.5.2 访问对象的数据和方法,点运算符. Circle c=new Circle(); c.radius c.getArea();,有时候,创建对象后很快不用,回收内存,创建对象不需要引用,对于实例变量和实例方法: 对象.变量 或 对象.方法 对于静态变量和静态方法: 常用 类名.变量 或 类名.方法 也可以 对象.变量 或 对象.方法,举例,对象的声明 格式 类名 变量名 Clock aclock; 声明一个引用变量时并没有对象生成 对象的创建 生成实例的格式: new () 例如: aclock=new Clock() 其作用是: 在内存中为此对象分配内存空间 返回对象的引用,8.5.3 数据域引用和 null,成员变量有默认值: 引用型: null 数值型: 0 0.0 boolean型: false char型: u0000(空不显示 DOS若字体大 a) 局部变量没有默认值:必须初始化,否则编译错,8.5.4 基本数据类型变量和引用类型变量的区别,P218 图8-7 图8-8,8.6 使用java中的类,System类 currentTimeMillis()返回1970-1-1日0时到现在的毫秒数 java.util.Date类 new Date().getTime()同上 Math类 random(),返回0.0, 1.0)之间的double数值 java.util.Random类 new Random().nextInt(101);返回(0,101)间整数 new Random().nextDouble();返回(0.0, 1.0)间小数,8.7 静态变量、常量、静态方法,数据成员 表示Java类的状态 声明数据成员必须给出变量名及其所属的类型,同时还可以指定其他特性 在一个类中成员变量名是唯一的 数据成员的类型可以是Java中任意的数据类型(简单类型,类,接口,数组) 分为实例变量和类变量,声明格式 public | protected | private static finaltransient volatile 变量数据类型 变量名1=变量初值, 变量名2=变量初值, ; 格式说明 public、protected、private 为访问控制符 static指明这是一个静态成员变量,属于类 final指明变量的值不能被修改 transient指明变量是临时状态 volatile指明变量是一个共享变量,实例变量 没有static修饰的变量称为实例变量(Instance Variables) 只能在对象创建后使用 用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同 可通过下面的表达式访问实例属性的值 .,类变量 也称为静态变量,声明时需加static修饰符 不管类的对象有多少,类变量只存在一份,在整个类中只有一个值 类初始化的同时就被赋值 适用情况 类中所有对象都相同的属性 经常需要共享的数据 系统中用到的一些常量值 引用格式 . 类方法 静态方法 同上,声明常量用final final类变量必须在声明的同时初始化 多数时候,常量被类的所有对象共享, 故,final static double p=3.14 补充:final修饰类? abstract修饰类?,static方法中不能访问非static成员,public class Foo public void method1() System.out.println(“china“+Math.PI); public static void main(String args) method1();/编译错 ,Foo a=new Foo(); a.method1();,问:编程时,变量和方法是否该定义成static的? 答:看其是否与具体实例相关,8.8 可见性修饰符,类成员的访问控制 公有(public) 可以被其他任何对象访问(前提是对类成员所在的类有访问权限) 保护(protected) 只可被同包任何类,同一类及其子类的实例对象访问 私有(private) 只能被这个类本身访问,在类外不可见 默认(default) 仅允许同一个包内的访问;又被称为“包(package)访问权限”,修饰成员(数据和方法)时,修饰类时,类的访问控制 类的访问控制只有public(公共类)及无修饰符(缺省类)两种 访问权限符与访问能力之间的关系如表,8.9 数据域封装 P227,private 成员变量 作用:防止数据被其它类直接篡改; 容易调试

温馨提示

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

评论

0/150

提交评论