Java技术及应用第三讲1面向对象技术.ppt
《Java技术及应用第三讲1面向对象技术.ppt》由会员分享,可在线阅读,更多相关《Java技术及应用第三讲1面向对象技术.ppt(72页珍藏版)》请在三一办公上搜索。
1、第3章Java面向对象初步,广东工业大学计算机学院,广东工业大学计算机学院,2,本章学习目标,类修饰符包多态本章补充阅读材料,广东工业大学计算机学院,3,面向对象整体概念图,广东工业大学计算机学院,4,面向对象几个概念,类:是既包括数据又包括作用于数据的一组操作的封装体。类中的数据称为成员变量,类中对数据的操作称为成员方法。对象:对象是类的实例。对象是动态的,有自己的生存周期。封装性:为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。继承性:提供从已存在的类创建新类的机制,继承使一个新类自动拥有被继承类的全部成员。一个类只有一个直接父类称为单重继
2、承,如果一个类拥有多个直接父类称为多重继承。多态性:提供类中方法执行的多样性。有两种表现形式:重载和覆盖。,广东工业大学计算机学院,5,3.1 类,类的相关概念类是抽象数据类型的具体实现,是具有相同属性和相同操作功能的对象的集合。对象是类的实例,两者之间的关系相当于一般程序设计语言中变量和变量类型的关系。在类中,数据或变量被称为成员变量,定义在类中的方法和成员变量统称为类的成员。在大多数类中,成员变量通过定义在该类中的方法来操作和存取,方法决定该类中的数据如何使用。(封装),广东工业大学计算机学院,6,3.1 类,Java中的类在Java程序中,类是由定义和主体构成的右图是Java中一个完整的
3、类,广东工业大学计算机学院,7,3.1 类,类的定义格式(0)从上页得知,Java中,类定义的基本语法如下:作用域 class 类名 extends 父类名 implements 接口名 成员变量声明 成员方法声明,广东工业大学计算机学院,8,3.1 类,类的定义格式(1)类的作用域 用来说明类的特殊性质。分为以下几种:外部类public 公共类型无关键字“友好的”abstract:抽象类 final:非继承 protected 和 private:应用于内部类,广东工业大学计算机学院,9,3.1 类,类的定义格式(2)关于类头在class关键字后面,应跟随自定义类的名称。(不要把class写
4、成了Class)。父类名跟在extends关键字后面,用来说明当前类是哪个已存在类的子类(只能有一个直接父类,与C+不同),说明继承关系。接口名跟在implements关键字后面,用来说明当前类中实现了哪个接口定义的功能和方法。接口是Java语言用来实现多重继承的一种特殊机制。(下一章将对接口进行详细介绍!),广东工业大学计算机学院,10,3.1 类,类的定义格式(3)关于类体(0)类体的定义要包括类的具体内容,包括类的属性与方法。class,广东工业大学计算机学院,11,3.1 类,类的定义格式(3)关于类体(1)类的成员变量语法:修饰符 变量类型 变量名=变量初值;例:private St
5、ring name;protected int age;,广东工业大学计算机学院,12,3.1 类,类的定义格式(3)关于类体(2)类的成员方法 类中定义的方法通常起到两种作用:一是围绕着类的属性进行各种操作;二是与其他的类或对象进行数据交流、消息传递等操作。Java中声明方法的语法如下:修饰符 返回值类型 方法名(参数列表)throws 异常名1,异常名2,局部变量声明;语句序列;/若返回值类型不为void,则需用return语句返回值,广东工业大学计算机学院,13,3.1 类,类的定义格式(3)关于类体(3)类的构造方法 一般而言,类的成员方法都是在类的实例对象创建之后,才用该对象调用相应
6、的方法。而构造方法能够在创建对象的同时执行该方法。Java允许对象在它们被创建时初始化自己。这种自动的初始化是通过使用构造方法(constructor)来完成的。构造方法的任务就是初始化一个对象的内部状态。,广东工业大学计算机学院,14,3.1 类,类的定义格式(3)关于类体(3)类的构造方法修饰符 类名称(类型1 参数1,类型2 参数2,)程序语句;./构造方法没有返回值。说明:1.修饰符可以是public或private.2.构造方法的名字必须与类名相同。3.构造方法没有返回值类型。4.构造方法不能由编程人员显式地直接调用,它是在对象创建时由new运算符自动调用的。5.构造方法可以重载,即
7、一个类可以有多个具有不同参数列表的构造方法。,广东工业大学计算机学院,15,3.1 类,类的定义格式(3)关于类体(3)类的构造方法实例1class Employee public Employee(String n,double s,int y,int m,int d)/构造方法 name=n;/职工姓名 salary=s;/职工工资 GregorianCalendar calendar=new GregorianCalendar(y,m-1,d);hireDay=calendar.getTime();/工作日期 private String name;private double sala
8、ry;private Date hireDay;Employee e=new Employee(“James Bond”,100000,1950,1,1),广东工业大学计算机学院,16,3.1 类,类的定义格式(3)关于类体(3)类的构造方法实例2构造方法的重载class CCircle;public CCircle()/没有参数的构造方法 public CCircle(String str,double r)/有两个参数的构造方法,广东工业大学计算机学院,17,3.1 类,类的定义格式(3)关于类体(3)类的默认构造方法每个类都至少有一个构造方法,如果程序员没有为类定义构造方法,系统会自动为
9、该类生成一个默认的构造方法。默认构造方法的名字与类名相同,它的参数列表和方法体均为空,自动将所有实例变量初始化为默认值(数值型为0,布尔型为false,字符型为u0000,对象型为null)。一旦定义了自己的构造方法,默认构造方法将不再起作用。,广东工业大学计算机学院,18,3.1 类,类的定义格式(3)关于类体(4)类的析构方法用于释放类的实例并执行特定操作。Java语言的资源回收机制能够自动释放不再被使用的对象,因此,自定义一般不需要设计析构方法。如果需要主动释放对象,或在释放对象时执行特定操作,则类中可以定义析构方法。public void finalize()/析构方法,一个类中只能有
10、一个 语句序列;,广东工业大学计算机学院,19,3.1 类,类的定义格式(3)关于类体(5)this 保留字this是对类对象自身的引用。它是一个泛指,与上下文环境有关。例如:this.edgeLength=Length;,class ThisClass public static void main()Bank bank=new Bank();bank.someMethod(this);/指代对象本身,class Circle int r;Circle(int r)this.r=r;public area()return r*r*3;/访问本类的成员方法、成员变量(区分局部变量),广东工业大
11、学计算机学院,20,3.1 类,类的定义格式(3)关于类体(4)this通过this()可以从某个构造函数调用另一个构造函数。例:class CCircle.public CCircle()this(Green,1.0);/此行会调用下面的构造函数public CCircle(String str,double r);完整程序,广东工业大学计算机学院,21,3.1 类,类的定义格式(3)关于类体(4)instanceof对象符对象运算符instanceof判断一个对象是否属于指定类及其子类,返回boolean类型。Date2 aday=new Date2(2006,5,1);aday inst
12、anceof Date2/返回true,aday是Date2类对象,广东工业大学计算机学院,22,3.1 类,类的定义格式(3)关于类体(5)extends在定义类时,使用extends来说明与父类的继承关系。Java中的类都是Object的子类,广东工业大学计算机学院,23,3.1 类,关于类体(5)extends类的赋值相容性:继承性具有“即是”性质:子类对象即是父类对象。反之则不然。例:Person p1=Student1 s1=(Student1是Person的子类)p1 instanceof Person1/返回true,p1是Person1类对象 s1 instanceof Per
13、son1/返回true,子类对象即是父类对象 p1 instanceof Student1/返回false继承性的“即是”性质表现为父类与子类之间具有赋值相容性,即父类对象能否被转换为子类对象,反之则不然。例:Person1 p1=new Student1();/赋值相容 Student1 s1=new Person1();/赋值不相容,广东工业大学计算机学院,24,3.1 类,类的定义格式(3)关于类体(5)supersuper指这个对象的父类,可用来引用父类中的方法(包括构造方法)及变量数据.特别是用于调用被父类所覆盖的实例方法和属性!,广东工业大学计算机学院,25,3.1 类,实例1:父
14、类实例的super引用(访问被覆盖的方法)public class Ostrich extends Brid/子类中原有的内容/增加一个callOverridedMethod()方法 public void callOverridedMethod()/在子类方法中通过super显式调用父类被覆盖的实例方法 super.fly();public static void main(String args)/创建Ostrich对象 Ostrich os=new Ostrich();/执行Ostrich对象的fly方法,将输出“我只能在地上奔跑”os.fly();os.callOverridedMet
15、hod();/借助该方法调用被覆盖的fly方法,输出”我在飞“!备注:this和super都不能出现在static修饰的方法中。,广东工业大学计算机学院,26,3.1 类,实例2:用super访问被覆盖的变量class BaseClass public int a=5;class SubClass extends BaseClass public int a=7;public void accessOwner()System.out.println(a);/访问覆盖属性a,输出7public void accessBase()/super是对该方法调用者对应的父类对象的引用 System.ou
16、t.println(super.a);/访问父类被覆盖的属性a,输出5.public static void main(String args),广东工业大学计算机学院,27,3.1 类,实例3:利用super调用父类的构造方法public class apple extends fruits public apple(int price)super(price);/other code 以上句子表示使用父类的构造函数生成实例 super必须是子类构造器的第一条语句(构造方法中才是如此),广东工业大学计算机学院,28,3.1 类,关于子类构造方法调用父类构造方法的补充说明。(分三种情况)子类构
17、造方法第一行用super显式调用父类构造方法,系统将根据super调用里传入的实参列表调用父类相应的构造方法。子类构造方法第一行使用this显示调用本类中重载的构造方法,系统将根据this调用里传入的实参列表调用本类另一个构造方法。执行本类另一个构造方法时会调用父类的构造方法。子类构造方法super、this调用,系统将会在执行子类构造方法之前,隐式调用父类无参数的构造方法。也就是说:不管哪种情况,子类构造方法总会调用父类构造方法一次。不仅如此,执行父类构造方法时,系统会再次上溯执行其父类的构造方法,以此类推,创建任何Java对象,最先执行的总是Java.lang.Object类的构造方法。,
18、广东工业大学计算机学院,29,3.1 类,实例:演示构造方法之间的调用关系 class Creature public Creature()System.out.println(“Creatrue无参构造方法”);class Animal extends Creature public Animal(String name)System.out.println(“Animal带一个参数的构造方法,该动 物的name为”+name);public Animal(String name,int age)this(name);System.out.println(“Animal带两个参数的构造函数,
19、其age为”+age);,广东工业大学计算机学院,30,3.1 类,实例:演示构造方法之间的调用关系(续)public class Wolf extends Animal public Wolf()/显式调用父类带两个参数的构造方法 super(“土狼”,3);System.out.println(“Wolf无参数的构造函数”);public static void main(Stringargs)new Wolf();结果?,广东工业大学计算机学院,31,3.1 类,类的定义格式(4)创建类及其实例对象对象是类的一个实例,类是同种对象的抽象,是创建对象的模板。在程序中创建一个对象将在内存中开
20、辟一块空间,其中包括该对象的属性和方法。1)new 我们将分步讲述这个类的实现细节。创建对象使用运算符new,例如下面的语句将创建Employee类的对象:,【例4.1】显示三个员工的相关信息,广东工业大学计算机学院,32,3.1 类,类的定义格式(4)创建类及其实例对象释放对象 Java语言有资源回收机制,能够自动跟踪存储单元的使用情况,自动收回不再被使用的资源。(C+则必须在对象使用完后释放对象),广东工业大学计算机学院,33,3.2 修饰符,访问控制修饰符 Java推出了“访问控制修饰符”的概念,允许库创建者声明哪些东西是客户程序员可以使用的,哪些是不可使用的。这种访问控制的级别在“最大
21、访问”和“最小访问”的范围之间,分别包括:public,默认(无关键字),protected以及private。下面的列表说明访问控制修饰符含义:,广东工业大学计算机学院,34,3.2修饰符,类的访问控制:public 类只要被声明成public,就意味着它可以被从任何地方访问。public class MyClass int i;void fun(),广东工业大学计算机学院,35,3.2修饰符,类的访问控制:public一个源程序在(同一个)文件中可以声明多个类,但用public修饰的类只能有一个,且该类名必须与文件名相同。例,在源文件Date1.java中可以声明多个类如下public c
22、lass Date1/公有的类class Date1_ex,广东工业大学计算机学院,36,3.2修饰符,类的访问控制:默认方式(freindly)假如类不含有一个明确的访问说明,说明它具有默认的访问控制特性。这种默认的访问控制权规定类只能被同一个包中的其他代码所访问,在包外不可见。这种访问特性称为包访问性。在默认方式中,java将同一个目录的类也当成同一个包,也可以访问。class MyClass int i;void fun(),广东工业大学计算机学院,37,3.2修饰符,实例(指出其中错误之处)第一个源文件:import demo.SuperClass;public class SubCl
23、ass extends SuperClass static public void main(String args)System.out.println(SubClass.);/End of method:main/End of class:SubClass第二个源文件:package demo;class SuperClass/./End of class:SuperClass,广东工业大学计算机学院,38,3.2修饰符,成员的访问控制方式:public则该成员可以被任何类中的方法访问表明对外开放的方式对于一个类,一般只有少量(或者没有)public 数据成员和部分 public 方法例:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 技术 应用 第三 面向 对象
链接地址:https://www.31ppt.com/p-6509813.html