《《JAVA面向对象基础》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《JAVA面向对象基础》PPT课件.ppt(68页珍藏版)》请在人人文库网上搜索。

1、第三章 面向对象基础,目标: 介绍面向对象编程的基本思想,通过本课的学习,应该掌握如下知识: 1)理解什么是类、对象、构造方法, 2)对象在内存中的表现形式及如何使用对象等。 3)Java的垃圾回收机制及访问修饰符。,本章要点,类和对象的关系 面向对象的思想 子类实例化的过程 对象的创建 构造方法 变量的初始化顺序 对象创建的内存模型 垃圾回收机制 Java中的关键字 this关键字 static关键字,主要内容,类和对象的关系,1,构造方法,2,对象创建的内存模型,3,Java中的关键字,4,类和对象的关系,面向对象的思想( Object Oriented Programming,简称OOP。

2、) 面向对象的基本思想是,从现实世界中客观存在的事物出发来构造软件系统,并在系统的构造中尽可能运用人类的自然思维方式 面向对象更加强调运用人类在日常的思维逻辑中经常采用的思维方法与原则 面向对象的三个特征 封装 继承 多态,类和对象的关系,面向对象与面向过程,public class Icebox static void putThings(String things) System.out.println(把冰箱门打开); System.out.println(把+things+放进来); System.out.println(把冰箱门关上); ,void OpenIcebox() prin。

3、tf(“把冰箱门打开n); void PutElephantI() printf(“把大象放冰箱n); void CloseIcebox() printf(“把冰箱们关上n); int main() OpenIcebox(); PutElephantIn(); CloseIcebox(); ,public class Mine public static void main(String args ) Icebox.putThings(大象); ,面向对象,面向过程,类和对象的关系,类的定义 把相似的对象划归成一个类。 在软件设计中,类,就是一个模板,它定义了通用于一个特定种类的所有对象的属性。

4、(变量)和行为(方法)。,类和对象的关系,类的定义 ?西游记游戏软件中的游戏人物 孙悟空:孙悟空的武器是金箍棒,战斗力五颗星,耐力五颗星 唐 僧:唐僧没有武器,战斗力为零,耐力五颗星 猪八戒:猪八戒的武器是耙子,战斗力四颗星,耐力两颗星 沙 僧:沙僧的武器是月牙铲 ,战斗力三颗星,耐力四颗星,类和对象的关系,类的定义 修饰符一般为public,也可以没有修饰符。 注意类名的命名规范。类名一般大写 类的成员: 成员变量(属性) 成员函数(方法) 通过“.”调用属性和方法,访问权限控制符 class 类名 类的成员 ,类的完全声明形式 public abstract | final class 类。

5、名称 extends 父类名称 implements 接口名称列表 变量成员声明及初始化; 方法声明及方法体; ,变量声明格式 public | protected | private static finaltransient volatile 变量数据类型 变量名1=变量初值, 变量名2=变量初值, ; 格式说明 public、protected、private 为访问控制符 static指明这是一个静态成员变量 final指明变量的值不能被修改 transient指明变量是临时状态 volatile指明变量是一个共享变量,类的方法声明格式: public|protected|privat。

6、e staticfinalabstractnativesynchronized 返回类型 方法名(参数列表) throws exceptionList 方法体; ,格式说明 方法修饰 public、protected、private 为存取控制符 static指明方法是一个类方法 final指明方法是一个终结方法 abstract指明方法是一个抽象方法 native用来集成java代码和其它语言的代码 synchronized用来控制多个并发线程对共享数据的访问,方法调用 给对象发消息意味着调用对象的某个方法 从对象中取得信息 修改对象的状态或进行某种操作 进行计算及取得结果等 调用格式 .(。

7、参数列表) 称点操作符“.”前面的为消息的接收者(receiver) 参数传递 值传递:参数类型为基本数据类型时 引用传递:参数类型为对象类型或数组时,访问修饰符,访问修饰符,访问修饰符可访问性,类和对象的关系,类的定义 Employee.java,class Employee String name; int age; double salary; public String showName() System.out.println(name); return name; public int showAge() System.out.println(age); return age; p。

8、ublic void updateName(String name2) name = name2; public void getSalary() System.out.println(The salary of this month is 2000); ,属性,方法,类和对象的关系,类的定义 练习 Person.java 定义一个Person类,Person类具有名字、年龄及性别等属性,并具有一个getInfo( )方法可以打印出Person类的属性, sayHello()方法和大家说“Hello everybody!”,类和对象的关系,类的定义 练习 Point.java 定义一个点类Po。

9、int,包含两个成员变量x、y分别表示x和y的坐标,一个movePoint(int dx,int dy)方法实现点的位置的移动。 public class Point int x,y; void movePoint(int dx,int dy) x=dx; y=dy; ,类和对象的关系,类的定义 练习 MyDate.java 定义一个点日期MyDate,包含三个成员变量year 、month、day分别表示年、月、日,以及每个属性对应的get和set方法(如,year有getYear( )方法用来获得日期的年份,还有setYear(int y)方法用来修改或设置日期的年份),最后还有print。

10、Date()方法,调用该方法可以把日期按照“yyyy-mm-dd”的形式输出。,类和对象的关系,类和对象的关系 类(class) 是对某一类事物的描述 对象(object) 是实际存在的某类事物的个体, 也称为实例(instance) 类是创建对象的模板,对象是类的实例。,类和对象的关系,对象的创建 语法格式 示例 TestEmployee.java,类名 对象名 = new 构造函数,Employee zhang = new Employee( ),类和对象的关系,对象的创建 练习 TestPerson.java 在TestPerson类里写一个main方法,在main( )方法中: 创建一。

11、个Person类的对象 这个对象的名字叫小沈阳,年龄28,性别男 在控制台中打印这个实例的信息 并调用这个对象的sayHello( )方法,向大家问好,类和对象的关系,对象的创建 练习 TestPoint.java 在TestPoint类里写一个main方法,在main( )方法中: 创建一个Point类的对象 这个点的坐标是(3,2) 将这个点移动到坐标为(5,6)的位置 并把移动后的点的坐标按“(x,y)”形式打印在控制台上,类和对象的关系,对象的创建 练习 TestDate.java 在TestDate类里写一个main方法,在main( )方法中: 创建一个MyDate类的对象 通过s。

12、etXXX方法将该日期对象的时间设置为“2013年10月8日” 在控制台上打印该对象的月份 把该日期对象按“2013-10-8”的格式输出,类和对象的关系,匿名对象 创建完对象,在调用该对象的方法时,也可以不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫匿名对象 使用匿名对象的情况 如果对一个对象只需要进行一次方法调用,new Person().sayHello(),Person p1 = new Person(); p1.sayHello();,Contents,类和对象的关系,1,构造方法,2,对象创建的内存模型,3,Java中的关键字,4,构造方法,构造方法(构造函数/构造器,C。

13、onstructor) 具有与类相同的名称 不含返回值类型 不能在方法中用return语句返回一个值 一般访问权限为public 在一个类中,具有上述特征的方法就是构造方法。 构造方法的作用 完成对象的创建,即完成对象的实例化 一般使用构造方法来完成对成员变量的初始化 示例 TestPerson.java,构造方法,默认的构造方法 在Java中,每个类都至少要有一个构造方法,如果程序员没有在类里定义构造方法,系统会自动为这个类产生一个默认的构造方法 一旦编程者为该类定义了构造方法,系统就不再提供默认的构造方法,class Employee public Employee( ) ,class E。

14、mployee ,构造方法, 练习 下列关于类的定义的选项中,哪些可以通过new Thing()方法来创建该类的一个对象____? A. public class Thing B. public class Thing public Thing() C. public class Thing D. public class Thing public Thing(void) public Thing(String s) E. public class Thing public void Thing() public Thing(String s) ,答案:A、B,构造方法, 练习 给定下列代码的。

15、执行结果是____? public class A void A() System.out.println(“Class A”); public static void main(String args) new A(); A. Class A B. 在第2行处抛出异常 C. 编译错误 D. 在第6行处抛出异常 E. 代码执行后没有输出,答案:E,构造方法,类和对象的关系 练习 XiyoujiRole.java 构造一个完整的西游记人物类,并定义一个构造方法,通过这个方法可以创建不同的西游记人物,并写一个main函数进行验证。 孙悟空:孙悟空的武器是金箍棒,战斗力五颗星,耐力五颗星 唐 僧:唐。

16、僧没有武器,战斗力为零,耐力五颗星 猪八戒:猪八戒的武器是耙子,战斗力四颗星,耐力两颗星 沙 僧:沙僧的武器是月牙铲 ,战斗力三颗星,耐力四颗星,方法的重载,方法的重载(overload) 函数的重载就是在同一个类中允许同时存在一个以上同名的函数 方法重载的规则 函数名称相同 函数的参数必须不同 参数个数不同 或 参数类型不同 函数的返回值类型可以相同,也可以不同,方法的重载,方法的重载(overload),方法的重载, 练习 下列选项中,哪些可以与void setAge(int year,int month,int day)方法在同一个类中定义____? A. public void set。

17、Age() B. void setAge(int age) C. void setAge(int y,int m,int d) D. int setAge(Date d) E. int setAge(int year,int month,int day) F. void setage(int year,int month,int dat),答案:ABDF,方法的重载, 练习 Person.java 在上一个Person类的基础上,完成以下功能: 声明一个有参的构造方法,使得通过调用该构造方法可以对Person类的三个成员变量进行初始化 再声明一个无参的构造方法,实现构造方法的重载,方法的重载,。

18、 练习 MethodAdd.java 在类MethodAdd中,声明三个方法add,分别计算 两个整数的和 三个整数的和、两个双精度浮点数(double)数的和, 并在该类写一个主程序中调用这个三个函数, 并将其结果打印,Contents,类和对象的关系,1,构造方法,2,对象创建的内存模型,3,Java中的关键字,4,对象创建的内存模型,引用类型变量 除了8种基本数据类型的变量,其他变量都是引用类型变量 类(class) 接口(interface) 数组,Person p ;,Animal a ;,int c ;,对象创建的内存模型,0 x8000,1.74,44,“lisi”,Person。

19、 p,0 x8000,name,age,height,Person p = new Person( “lisi”, 44, 1.74);,引用类型变量的内存模型,对象创建的内存模型,0 x8000,0 x3000,1.74,44,“lisi”,Person p,0 x3000,name,age,height,1.73,33,“zhang”,name,age,height,Person q,0 x8000,引用类型变量的内存模型,Person p = new Person( “zhang”, 33,1.73); Person q = new Person( “lisi”, 44, 1.74);,。

20、变量的作用域,变量的作用域 全局变量 类体中声明的成员变量为全局变量 全局变量在类的整个生命周期中都有效 局部变量 方法体中声明的变量,方法中的参数,或代码块中声明的变量,都是局部变量 局部变量只在方法调用的过程中有效,方法调用结束后失效,变量的作用域,变量的作用域,class Employee String name; int age; double salary; public String showName() String hello = “你好”; System.out.println(hello+name); return name; public void updateName(。

21、String name2) name = name2; ,全局变量,局部变量,变量的作用域,变量初始化的顺序 隐式赋予变量默认值 成员变量 显式赋予初始值 通过构造方法体赋予新值 示例 PersianCat.java,各类型变量默认初始化值,变量的作用域, 练习 给定下列代码的执行结果是____? public class X ( private static int a; public static void main(String args) modify(a); System.out.println(a); public static void modify(int a) a+; A. 。

22、0 B. 1 C. 编译错误 D. 运行时异常,答案:A,程序执行过程, 执行过程中的内存管理,代码,JVM系统代码, 装载到内存区,stack,heap,data segment,code segment, 找到main方法开始执行,基本数据类型变量 引用类型变量地址,引用变量,静态变量 常量,存放代码,Java代码在系统中的执行过程,补充:参数传值,当方法被调用时,如果方法有参数,参数必须要实例化,即参数变量必须有具体的值。 public class Date /类声明 int year,month,day; /成员变量,表示年、月、日 void setDate(int y,int m,i。

23、nt d) /成员方法,设置日期值 /无返回值,有4个参数 year = y; month = m; day = d; public static void main(String args) Date1 aday = new Date1() ; /创建对象 aday.setDate(2013,9,28); /调用类方法 ,1基本数据类型参数的传值值,这种数据传递方式被称为是值传递,方法接收参数的值,但不能改变这些参数的值。,2引用类型参数的传值地址,引用传值方式:Java的引用类型数据包括对象、数组和接口,当方法中参数是引用类型时,引用数据类型传递给方法的是数据在内存中的地址,方法中对参数变。

24、量的操作可以改变原变量的值。,class People String face; void setFace(String s) face = s; class C void f(int x, double y, People p) x = x + 1; y = y + 1; p.setFace(笑脸); System.out.println(参数x和y的值分别是: + x + , + y); System.out.println(参数对象p的face是: + p.face); public class Ep4_8 public static void main(String args) int。

25、 m = 100; double n = 100.88; People zhang = new People(); zhang.setFace(很严肃的样子); C a = new C(); a.f(m, n, zhang); System.out.println(main方法中m和n的值仍然分别是: + m + , + n); System.out.println(main方法中对象zhang的face是: + zhang.face); ,zhang.face= 很严肃的样子;,改变形参值 导致实参值的改变,zhang.face= “笑脸;,参数x和y的值分别是:101,101.88 参数对。

26、象p的face是:笑脸 main方法中m和n的值仍然分别是:100,100.88 main方法中对象zhang的face是:笑脸,补充内容对象数组,在Java中不但可以声明由原始数据组成的数组,还可以声明由对象组成的数组; 声明对象数组的方式如:,/假设已经定义了一个Student类 /*声明由5个Student对象组成的数组*/ Student stdAry = new Student5;,对象数组=引用数组,对象数组示例,/*对象数组示例,假设已经定义了Student类*/ public static void main(String args) /*创建包含有5个Student引用的数组。

27、*/ Student stdAry = new Student5; /*逐一为每个引用创建对象实例*/ stdAry0 = new Student(张三, 18); stdAry1 = new Student(李四, 20); stdAry2 = new Student(王五, 24); stdAry4 = new Student(郑六, 21); stdAry4 = new Student(田七, 19); for (int i = 0; i stdAry.length; i+) stdAryi.display(); ,对象数组的存放形式,垃圾回收机制,垃圾回收器(GC, Garbage C。

28、ollection) Java的一个重要特点句是具有一个垃圾回收器,并且能够自动回收垃圾,这也是Java相对于其他语言有优势的地方 对内存的释放和回收的工作是由Java运行系统(JRE)承担的,不用编程者关注 在Java程序运行过程中,一个垃圾回收器会不定时地被唤起检查是否有不再被使用的对象,并释放它们所占用的内存空间 垃圾回收器的启用不由程序员控制,也无规律可循,垃圾回收机制,垃圾回收机制 System.gc( )、null Java里提供了一个System.gc( )方法,使用这个方法可以建议垃圾回收器回收垃圾 在Java中,可以通过将对象的引用变量设置为null,来暗示垃圾回收器来回收该。

29、对象,class Employee String name; int age; double salary; public static void main(String args) Employee e = new Employee(); new Employee(); e = null; System.gc(); System.out.println(“The program is end”); ,垃圾回收机制,后台线程,主线程,Object o2 = new Object( );,o2 = null;,Object o1 = new Object( );,The heap,检查出对象没有。

30、引用指向,调用o2对象的finalize() 方法,垃圾回收机制回收分配给该对象的内存,垃圾回收采用Java多线程机制,垃圾回收机制,垃圾回收机制, 练习 什么时候程序会销毁一个对象x____? A. x.delete() B. x.finalize() C. System.gc() D. 设置对象的引用为null F. 只有垃圾回收器才可以销毁一个对象,答案:F,Contents,类和对象的关系,1,构造方法,2,对象创建的内存模型,3,Java中的关键字,4,Java中的关键字,this关键字 代表对象自身的引用 一个引用 指向调用该方法的当前对象 通常在类的方法定义中使用 用this关键。

31、字的情况 方法中的变量与成员变量重名 在一个构造方法中,调用其它重载的构造方法 返回当前对象的引用,成员变量和局部变量,public class Employee int sideA, sideB, sideC; void setSide(int sideA, int sideB, int sideC) this.sideA = sideA; this.sideB = sideB; this.sideC = sideC; ,注:如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,这时如果想在该方法内使用成员变量,必须使用关键字this。,Java中的关键字,static关键字 stati。

32、c可以修饰的元素 属性 方法 代码块 需要注意的问题 只能修饰类成员,不能修饰局部变量。,Java中的关键字,static修饰的变量 静态变量 所有对象共享 也称为类变量 用static修饰的成员变量,它们在类被载入时创建,只要类存在,static变量就存在 两种方式访问: 直接访问:类名.属性; 实例化后访问:对象名.属性,静态属性,Java中的关键字,static变量的内存模型,Java中的关键字, 练习 Person.java 在Person类中添加一些代码,使其可以统计在整个使用过程中一共产生了多少个Person类的实例对象 提示:利用static修饰的变量,Java中的关键字,sta。

33、tic修饰的方法 静态方法 不需要实例化,可以直接访问 也称为类方法 两种方式访问: 直接访问:类名.方法名() 实例化后访问:对象名.方法名() static方法的作用 简化方法的使用; 便于访问静态属性; 注意事项 静态方法里只能直接访问静态成员,而不能直接访问类中的非静态成员 静态方法中不能使用this、super关键字 静态方法不能被非静态方法覆盖,静态方法不能修饰构造方法,静态方法,Java中的关键字,static修饰的代码块 静态代码块 一个类中由static关键字修饰的,不包含在任何方法体中的代码块 当类被载入时,静态代码块被执行,且只被执行一次 静态块经常用来进行类属性的初始化。

34、,静态代码块,Java中的关键字, 练习,public class CircleStatic static double pi = 3.14; int radius=100; public static void main(String args) System.out.println( _1_ ); /打印pi __________2__________ ; System.out.println(__3__); /打印radius ,答案: pi CircleStatic c = new CircleStatic() c.radius,总 结,类和对象的关系 如何定义类 对象的创建 构造方法 如何定义构造方法 方法的重载 对象创建的内存模型 引用类型变量 变量的初始化 垃圾回收机制 Java中的关键字 this关键字 static关键字。

java面向对象课件_《JAVA面向对象基础》PPT课件.ppt相关推荐

  1. c语言谭浩强ppt课件,编程_C语言学习课件_谭浩强_PPT~1216F.ppt

    编程_C语言学习课件_谭浩强_PPT~1216F.ppt ,第一章,C语言概述本章要点,C语言的特点 C程序的结构 在计算机上运行C程序的方法主要内容,1.1 语言出现的历史背景 1.2 程序的特点 ...

  2. java取负数_[Java] 告别“CV 工程师”码出高效!(基础篇)

    作为一名资深的 CV 工程师,某天,当我再一次日常看见满屏的报错信息与键盘上已经磨的泛白的 Ctrl.C.V 这三个按键时,我顿悟了. 百度谷歌复制粘贴虽然很香,但是总是依靠前人种树,终会有一天失去乘 ...

  3. 零基础学java web开发_从零基础学Java成为一个专业的java web 开发者

    原标题:从零基础学Java成为一个专业的java web 开发者 "我怎么才能成为一个Java Web开发者?"对于这个问题,答案其实并不简单.成为一个Java Web开发人员包括 ...

  4. java 文本压缩_[Java基础]Java使用GZIP进行文本压缩

    import java.io.IOException; import java.util.zip.GZIPOutputStream; import org.apache.commons.io.outp ...

  5. java属于面相_[Java教程]面相对象

    [Java教程]面相对象 0 2018-09-13 16:00:26 面向对象 那什么是面向对象? 在Java 中,我们是一切皆对象,所有的方法都是围绕着对象来的.面相对象是相对面向过程而来的,他们都 ...

  6. java private 对象_[Java笔记]类的所有构造器都是private权限,就一定没有办法实例化它的对象了么?...

    笔者以前学过C++语言.众所周知,C++也是一门面向对象程序设计语言.还记得当时在大学的时候,老师讲过这样的话:类的构造函数不应该设置成private权限,这样的话还怎么去实例化类的对象?当时也信以为 ...

  7. java控制语句练习题_[Java初探实例篇02]__流程控制语句知识相关的实例练习

    本例就流程控制语句的应用方面,通过三个练习题来深入学习和巩固下学习的流程控制语句方面的知识,设计到,if条件判断语句,switch多分支语句,for循环语句及其嵌套多层使用,while循环语句. 练习 ...

  8. 计算机技术的应用 课件,计算机技术及应用基础――第二章ppt课件

    <计算机技术及应用基础――第二章ppt课件>由会员分享,可在线阅读,更多相关<计算机技术及应用基础――第二章ppt课件(64页珍藏版)>请在人人文库网上搜索. 1.第二章 VB ...

  9. 计算机软件基础知识课件,计算机硬件与软件基础知识课件.ppt

    计算机硬件与软件基础知识课件.ppt (14页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 计算机硬件与软件基础知识胡春挺 液晶电脑一体 ...

  10. java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件

    注意两点: 1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中. 2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取. 例子 ...

最新文章

  1. 2020年投入200000000美元,华为不只挖掘年薪百万的“天才少年”
  2. python爬取b站用户_用Python爬取bilibili全站用户信息
  3. sas Data步数据读取流程详解
  4. JavaFX技巧1:可调整大小的Canvas
  5. 怎么挪动_2020蚕茧多少钱一斤,蚕茧怎么做成蚕丝被
  6. python的setting怎么找_django项目的配置文件settings.py详解
  7. pythonqt5plaintextedit某一行的内容_如何能够做到持续输出内容?
  8. matlab ct投影数据,CT_projection_and_reconstruction
  9. 计算机系统层次中 从上层,在计算机系统层次结构中下层是上层的上层是下层的一个.ppt...
  10. Oracle中是用case...when语句进行判断
  11. Android WiFi 获取 IP 过程
  12. Chrome开发者工具对于异常请求不显示Response内容
  13. 遇到 no plugin found for prefix 'tomcat 7' in the current project and in the plugin groups 的解决办法
  14. C语言从入门到精通需要多久?你真的知道吗!
  15. 如何破解无线网络密码(无线网络密码破解)
  16. 坐标系的另一种表达形式,EPSG是什么?
  17. 如何检测ajax完成且是成功的,检测ajax调用是否成功
  18. cesium获取当前屏幕中心点坐标
  19. 用word制作正规公文(转)
  20. Oracle中用system存数据,【学习笔记】Oracle表空间 数据存放system表空间影响数据库性能...

热门文章

  1. Postgres XL 集群中各节点的角色和作用
  2. [Leetcode]-- Valid Number
  3. Hyper-V虚拟机安装及网卡无法找到,驱动无法安装解决办法
  4. Oracle发布Java移动开发路线图 影响近千万开发者
  5. Ubuntu中让SSH自动重连
  6. 查找系列合集-二分查找
  7. [CTSC2008]网络管理Network
  8. 理解 CI 和 CD 之间的区别(翻译)
  9. [Python教程] 一只乌龟其实也很酷 (1、动起来)
  10. Express+Socket.IO 实现简易聊天室