chapter03-面向对象.ppt
《chapter03-面向对象.ppt》由会员分享,可在线阅读,更多相关《chapter03-面向对象.ppt(54页珍藏版)》请在三一文库上搜索。
1、内容,面向过程与面向对象的区别 类与对象的概念 类的定义 对象的创建和使用 构造函数 对象内存分析及引用传递 this 关键字 static 关键字 类的继承 方法的覆盖 super 关键字,final 关键字 抽象类 接口 多态 抽象类与接口的区别 Object 类 package 和import 初步Eclipse 访问权限控制 内部类 单例模式初步,面向过程与面向对象的区别,面向过程 装修:找水电师傅搞水电,找瓦匠铺地板,找刷漆匠刷墙 面向对象 装修:水电工作,瓦匠工作,漆匠工作 面向对象对会将现实世界分割成不同的单元(对象),实现各个对象,如果完成某个功能,只需要将各个对象协作起来就可
2、以。 为什么要面向对象? 因为现在信息系统越来越复杂,我们程序要做的事情越来越庞大,越来越复杂。 面相对象的三大特征 封装 继承 多态,类和对象的概念,对象(object) 计算机语言对现实物体的描述。具有属性和方法。比如张三,李四,101班,102班。 类(class) 类是对具有共性事物的抽象描述,是在概念上的一个定义。通常根据名词(概念)来发现类,如在成绩管理系统中:学生、班级、课程 对象和类的关系 对象是类的具体和实现,类是对象的抽象。,101班,102班,班级,102班,101班,103班,类的定义,java中使用class关键字定义类 public class Student /学
3、号 int id; /姓名 String name; /性别 char sex; /地址 String address; /年龄 int age; 操作Student.java,对象的创建和使用,new 创建出来,才能用 Student zhangsan = new Student(); System.out.println(“id=“ + zhangsan.id); 操作:创建OOTest01.java 类是静态的概念是要预先定义的,对象是动态创建的 使用对象的引用访问对象成员变量和成员方法,引用.方式访问 操作:OOTest02.java,Customer.java 引用.访问和get,s
4、et访问 了解访问类的非静态方法,静态成员变量,成员变量,成员变量(全局变量),有称之为属性 类型可以是基础类型,也可以是引用类型 作用域是全局的 默认初始化,这和局部变量不一样,对象的创建和使用,内存分析解释对象创建和使用 对象没有引用指向的时候被垃圾回收器回收 操作分析Customer.java,OOTest03.java java值传递,引用类型和基础类型区别 操作分析:OOTest04.java,OOTest05.java 引用类型传递是堆内存地址 基础类型传递的是字面值,内存分析,构造方法(构造函数,构造器,Constructor),构造方法主要用来创建类的实例化对象,可以完成创建实
5、例化对象的初始化工作。构造方法调用完成,对象才算创建成功 修饰符列表 构造方法名(形式参数列表)方法体; 构造方法名称必须与类名一致 构造方法不具有任何返回值类型,即没有返回值,关键字void 也不能加入,加入后就不是构造方法了,就成了普通的方法了 任何类都有构造方法,如果没有显示的定义,则系统会为该类定义一个默认的构造器,这个构造器不含任何参数,如果显示的定义了构造器,系统就不会创建默认的不含参数的构造器了。 构造方法可以重载,和普通方法一致。 操作:ConstructorTest01.java,User.java,练习理解构造方法,操作并内存分析:ConstructorPoint.java
6、,this关键字,this是什么? this是一个内部引用类型。堆中每一个java对象都有一个this引用,保存的存地址执行自己本身。这叫内部引用 this可以用在那? this用在构造方法中,通过一个构造方法去调用另一个构造方法。必须出现在构造方法的第一行。 例如:this(1970,1,1);/this(参数列表方式)调用另外一个构造方法 编写ThisTest01.java this能用在成员方法中,访问对象的其他成员方法和成员变量。 编写ThisTest02.java 当局部变量和成员变量重名的时候可以使用this 指定调用成员变量。 编写ThisTest03.java this.成员方
7、法(成员变量)的时候,this代表了当前对象 this不能用在静态方法中. 编写ThisTest04.java,static关键字,static修饰的变量叫做“静态变量”. static修饰的方法叫做“静态方法”. static还可以定义静态语句块. static定义的静态语句块在类加载阶段执行,并且只执行一次,并且是自上而下的顺序执行。 操作:StaticTest01.java,static块和普通实例语句块对比,实例语句块(普通程序块)每一次调用构造方法之前会执行一次。实例语句块执行顺序也是自上而下。 静态块是类加载的时候执行。回顾下java运行机制。自上而下执行,是在main方法之前 操
8、作分析:StaticTest02.java,static修饰方法,static修饰的方法叫做“静态方法“ 静态方法不用创建对象也能直接访问该方法。和对象无关 使用“类.“。也可以使用“引用.“访问该方法。使用“引用.“本质 引用.,所以推荐“类.“ 操作分析:StaticTest03.java 静态方法中不能访问非静态资源 一般情况下工具类中的方法大部分都是静态方法。,static修饰全局变量,static修饰的变量叫做“静态变量” 所有某个类的实例共用一份静态变量,实际上就是方法区的一块内存。静态变量和实例引用没有关系 静态变量访问和静态方法一样可以使用“类名.“,也可使用“引用.”。使用“
9、引用.“本质还是使用“类.“,所以推荐“类.“ 操作分析:StaticTest04.java,关于代码顺序,public class StaticTest05 /编译通过 static int i = 100; static System.out.println(i); /非法向前引用 /* static System.out.println(i); static int i = 100; */ ,类的继承,为什么要继承 面向对象的三大特性:封装(封装细节),继承,多态 继承是面向对象的重要概念,软件中的继承和现实中的继承概念是一样的 继承是实现软件可重用性的重要手段,如:A 继承B,A 就拥
10、有了B 的所有特性,如现实世界中的儿子继承父亲的财产,儿子不用努力就有了财产,这就是重用性 使用了extends以后,代码可以复用 正是因为有了继承,才可以有多态,才可以有抽象 java 中只支持类的单继承,也就是说A 只能继承B,A 不能同时继承C java 中的继承使用extends 关键字 操作内存分析:SuperClass.java Sub.java Test01.java 所有类的基类都是Obect,方法的覆盖(Override)(重写),回顾方法的重载 条件: 方法名称相同 方法参数类型、个数、顺序至少有一个不同 方法的返回类型可以不同,因为方法重载和返回类型没有任何关系 方法的修
11、饰符可以不同,因为方法重载和修饰符没有任何关系 方法重载只出现在同一个类中 为什么要方法覆盖 因为子类某一方法行为和父类不一致,或者完全不同。,方法覆盖(Override),什么是方法覆盖(重写) 如果父类方法无法满足业务需要,子类将父类的方法进行重新写一遍; 子类重写以后,引用指向的如果是子类对象的话,调用方法实际运行的是子类方法。 方法覆盖的条件 必须要有继承关系 覆盖只能出现在子类中,如果没有继承关系,不存在覆盖,只存在重载 在子类中被覆盖的方法,必须和父类中的方法完全一样,也就是方法名,返回类型、 参数列表,完全一样 子类方法的访问权限不能小于父类方法的访问权限 子类方法不能抛出比父类
12、方法更多的异常,但可以抛出父类方法异常的子异常 父类的静态方法不能被子类覆盖 父类的私有方法(private)不能覆盖 覆盖是针对成员方法,而非属性 编写Test01.java,Test02.java,Test03.java,super关键字,super关键字的作用 调用父类的构造方法 调用父类的成员方法 super只能用在非静态方法中和this一样 为什么会有 super关键字 因为子类必须要调用父类的构造方法,先把父类构造完成,因为子类依赖于父类, 没有父,也就没有子 有时需要在子类中显示的调用父类的成员方法 super是什么? super不是引用类型,super中存储的不是内存地址,su
13、per指向的不是父类对象。 super代表的是当前子类对象中的父类型特征。 操作分析:Employee.java,Manager.java,Test01.java,super用在构造方法,一个构造方法第一行如果没有this(.);也没有显示的去调用super(.);系统会默认调用super(); super(.);的调用只能放在构造方法的第一行。 super(.);调用了父类中的构造方法,但是并不会创建父类对象。 操作分析:Account.java,DebitAccount.java,Test02.java,final关键字,final表示不可变的意思 采用final 修饰的类不能被继承 采用
14、final 修饰的方法不能被覆盖 采用final 修饰的变量不能被修改,final 修饰的变量必须显示初始化 构造方法不能被final 修饰 操作说明:Test01.java 如果修饰的引用,那么这个引用只能指向一个对象,也就是说这个引用不能再次赋 值,但被指向的对象是可以修改的 操作说明:Test02.java,抽象类abstract和抽象方法,在java 中采用abstract 关键字定义的类就是抽象类,采用abstract 关键字定义的方法就是抽象方法 抽象的方法只需在抽象类中,提供声明,不需要实现 操作分析:A.java 如果一个类中含有抽象方法,那么这个类必须定义成抽象类。但是抽象类
15、可以没有抽象方法。 如果这个类是抽象的,那么这个类被子类继承,抽象方法必须被重写。如果在子类中不复写该抽象方法,那么必须将此类再次声明为抽象类 抽象的类是不能实例化的,就像现实世界中人其实是抽象的,张三、李四才是具体的。 操作分析:A.java 抽象内能有部分方法实现。 操作分析:A.java,抽象类,抽象类不能被final 修饰 抽象方法不能被final 修饰,因为抽象方法就是被子类实现的 操作分析:C.java 为什么要有抽象方法和抽象类。 往往父类需要定义特征行为,但是具体实现不明确,只有子类能明确。 或者不同子类实现不一样,行为分化。 其实就是多态,接口,接口我们可以看作是抽象类的一种
16、特殊情况,在接口中只能定义抽象的方法和常量,在java 中接口采用interface 声明 操作编写A.java 接口中的方法默认都是public abstract 的,不能更改成private或者其他权限。 继续编写A.java 接口中的变量默认都是public static final 类型的,不能更改,所以必须显示的初始化.public static final是可以省略的 继续编写试验A.java 接口不能被实例化,接口中没有构造函数的概念。不能new接口 编写Testnew.java,接口,接口之间可以继承,但接口之间不能实现 继续试验A.java 接口中的方法只能通过类来实现,通过
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- chapter03 面向 对象
链接地址:https://www.31doc.com/p-2148905.html