chapterjava基础课件第三章

上传人:tian****1990 文档编号:71695308 上传时间:2019-01-21 格式:PPT 页数:48 大小:404.50KB
返回 下载 相关 举报
chapterjava基础课件第三章_第1页
第1页 / 共48页
chapterjava基础课件第三章_第2页
第2页 / 共48页
chapterjava基础课件第三章_第3页
第3页 / 共48页
chapterjava基础课件第三章_第4页
第4页 / 共48页
chapterjava基础课件第三章_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《chapterjava基础课件第三章》由会员分享,可在线阅读,更多相关《chapterjava基础课件第三章(48页珍藏版)》请在金锄头文库上搜索。

1、第3章 Java面向对象程序设计,内容提要: 类的创建 继承 包 访问控制 接口 内部类,3.1类的创建,类是组成Java程序的基本要素,也是Java中重要的引用数据类型。类封装了一类对象的状态属性和行为方法,是类对象的原型。创建一个新类,就是创建一种新的数据类型,即引用数据类型。,3.1.1类的声明,类的实现包括两部分:类声明和类体。基本格式为: class ,3.1.1类的声明,其中修饰符可以是pubic、abstract或final,说明类的属性。这个public关键字声明了类可以在其它任何的类中使用;abstract关键字声明了这个类不能被实例化;final关键字声明了类不能被继承,即

2、没有子类了。 class是关键字,用来定义类,类名必须是合法的Java标识符;,3.1.1类的声明,extends是关键字,用来说明该类是SuperclassName的子类.SuperclassName是该类的父类的名字; implements是关键字,用来声明本类要实现的一个或多个接口,interfaceNameList是本类所执行的接口的名字列表,它们是以逗号分隔的。 两个大括号以及之间的内容是类体。,3.1.2类体,类体是跟在类声明的后面,它是嵌入在大括号“”和“”中间的。类体中定义该类中所有的变量和方法。例如: class Person int age; /成员变量 int getAg

3、e() /成员方法 return age; void setAge(int i) /成员方法 age = i; ,3.1.3 成员变量和局部变量,类的状态是由它的成员变量给出的,你可以在类体中声明一个类的成员变量。 成员变量:在类体中,变量声明部分所声明的变量被称为类的成员变量; 局部变量:在方法体中声明的变量和方法中的参数被称为局部变量。 对类的成员变量来说,又可以分为实例成员变量和类成员变量,如果在声明时,用修饰符static声明的变量称为类变量,在声明时,没有用修饰符static修饰的变量称为实例变量。,3.1.3 成员变量和局部变量,成员变量的类型可以是Java中任意的数据类型,包括简

4、单类型、类、接口和数组。成员变量在类的定义中声明,在一个类中成员变量的名字是唯一的。在创建对象的同时创建有关的成员变量,成员变量创建后系统自动对其进行默认初始化或显式初始化。 成员变量依附于对象(局部变量)的存在而存在,具有与对象相同的生存期和作用域。例如: public class Person private int age; public String name = “Lila”; ,成员变量的限定符,对于一个成员变量,可以使用不同的限定符,以限定不同的访问权限。 private:变量只能被类中的代码访问 protected:可以被继承类及同一个包中的类访问 public:能被类外的代码

5、访问 无限定符: (包访问权限)可以被类中的代码和同一个包中的类访问 通常,使用private关键字来声明成员变量,使这些变量仅适用于每个类实例中的代码。同时这种方式也符合类的封装性。,成员变量的限定符,对于一个成员变量,还可以使用下面的限定符: static: 用来制订一个变量使静态变量(类变量),没有static修饰的变量是实例变量。类变量既可以由类方法访问,也可以由实例方法来访问。 final: 用来声明一个常量,作用相当于C语言中define命令,对于用final关键字修饰的常量,在程序中不能作修改,通常常两用答谢字母。 volatile:用来声明一个由多线程共享的变量,使得各线程对该

6、变量的访问能保持一致。,定义和使用局部变量案例,public class Testvarible private int i=1; public void method1() int i=4, j=5; this.i = i + j; method2(7); public void method2(int i) int j=8; this.i = i + j; System.out.println(this.i); public static void main(String args) Testvarible t = new Testvarible (); t.method1(); ,程序执

7、行的效果如图所示。,思考题:该例中哪些是局部变量?哪些是成员变量?并说明其作用域。,定义和使用局部变量案例,3.1.4方法,对象的行为是由它的成员方法来执行的,其它对象通过调用它的方法来访问对象。在JAVA中,你可以在变量声明之后再声明类的成员方法。对类的成员变量来说,可以分为实例成员变量和类成员变量,同样成员方法同样可以分为实例成员方法和类成员方法。如果在声明时,用修饰符static声明的方法称为类方法,在声明时,没有用修饰符static修饰的变量称为实例方法。 方法的定义包括两部分:方法的声明和方法体。,定义和使用方法,class Testmethod double x, y ;stati

8、c float mark; float total(float a,float b) float total; x=0.4;y=0.6; total=(float)(x* a+ y* b); return total; static void setMark(float i) mark=i; static float getMark() return mark ;,续,public void display() System.out.println(“The total score“ + “=“ + mark); public static void main(String args) Tes

9、tmethod tm = new Testmethod (); mark=tm.total(67,98); tm.display(); tm.setMark(96); tm.display(); ,程序执行的效果,该例中,方法setMark和getMark是类方法;方法total是实例方法,返回值是float类型,在方法被调用时,形式参数a,b用来接受外部输入的数据(实际参数)。,3.1.5方法重载,方法重载(overloading)是指多个方法享有相同的名字,方法的参数列表必须不一样,这里的不一样可能是个数,类型不一样。重载和方法的返回值无关,返回值可以相同,也可以不同。在同一个类中可以定义

10、多个同名方法。如: class Testoverload int add(int a, int b) ; String add(String a, String b) ; double add(double a, double b) ; MyClass add(MyClass a, MyClass b) ;,3.1.6构造方法,在面向对象程序语言中,创建对象的时候总是调用一个特定的方法,这个方法叫做构造方法。在Java语言中,构造方法特点是: 构造方法的名字必须与它所在的类的名字完全相同; 构造方法不返回任何数据类型,即它是void型,但不能写void; 构造方法一般不能由编程人员显示地直接调

11、用,必须通过运算符new调用或者在创建对象时由系统自动调用。,默认的构造方法,Java语言中,每个类都至少有一个构造方法; 如果类的定义者没有显式的定义任何构造方法,系统将自动提供一个默认的构造方法: 默认构造方法没有参数 默认构造方法没有方法体 Java类中,一旦类的定义者显式定义了一个或多个构造方法,系统将不再提供默认的构造方法;,默认的构造方法,类的定义:public class Person private int age; public void setAge(int w) age = w; 等价于: public class Person private int age publi

12、c Person() public void setAge(int w) age = w; 应用举例:public class Test public static void main(String args) Person d = new Person() ; d.setAge(16); ,(1)用于覆盖范围规则,代表当前对象本身。当一个方法需要激活它的对象时,即可以利用this实现该功能。因此,this可以看成是类对象的别名,使类中的隐藏数据以及方法可以引用。如: class College int a; public static void main(String args) int a

13、=6; College b=new College(); System.out.println(“main().a=“+a); System.out.println(“b.a=“+b.call(); ,3.1.7 this的用法,续,int call() int a=9; this.a=a+; System.out.println(“call().a=“+a); return this.a; 程序执行的效果 :,(2)用于代表当前类的构造方法。如: class College private String name; College(String name)this.name = name;

14、College() this(“福州大学”); ,3.1.7 this的用法,3.2 继承,继承(inheritance)的思想就是重用其它类中的方法和属性来创建新类。利用继承,可以先创建一个具有某些基本功能的一般类,然后将这些类作为基础去创建具有特殊功能的类。 由继承而得到的类称为子类(subclass),被继承的类称为父类或超类(superclass)。父类包括所有直接或间接被继承的类。一个父类可以同时拥有多个子类,由于Java不支持多重继承,所以一个子类只能拥有一个直接父类。在Java中,所有的类都是通过直接或间接继承类java.lang.Object而得到的。,类的继承 (1),为描述

15、和处理个人信息,定义类Person:,public class Person public String name; public int age; public Date birthDate; public String getInfo() . ,类的继承 (2),为描述和处理学生信息,定义类Student:,public class Student public String name; public int age; public Date birthDate; public String school; public String getInfo() . ,类的继承 (3),通过继承,

16、简化Student类的定义:,public class Person public String name; public int age; public Date birthDate; public String getInfo() . public class Student extends Person public String school; public String getInfo() . ,类的继承 (4),继承体系中对象类型的转换,Person a = new Person(); Student b = new Student(); Person c = b; Student d = a;,类的继承 (5),继承与多态性,Person a =

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号