面向对象概念总结

上传人:第*** 文档编号:55983434 上传时间:2018-10-08 格式:DOCX 页数:12 大小:27.65KB
返回 下载 相关 举报
面向对象概念总结_第1页
第1页 / 共12页
面向对象概念总结_第2页
第2页 / 共12页
面向对象概念总结_第3页
第3页 / 共12页
面向对象概念总结_第4页
第4页 / 共12页
面向对象概念总结_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《面向对象概念总结》由会员分享,可在线阅读,更多相关《面向对象概念总结(12页珍藏版)》请在金锄头文库上搜索。

1、面向对象概念总结面向对象概念总结面向对象核心:重用面向对象核心:重用1.类:类的目的重复声明一组数据。用类创建的一组数据称为对象。-实际上是根据对象设计的类:由对象抽象出的类。类是模子,确定对象将会拥有的特征(属性)和行为(方法) 。类是对象的类型。对象:属性对象拥有的各种特征方法对象执行的操作类是抽象的概念,仅是模板;对象是一个具体的实体。类的重要性:所有 Java 程序都是以类 class 为组织单元 2.对象:能够软件中用于表示一个客观存在的物体的一组数据。计算机的对象用一组数据来表示。3.属性:是对象的一个数据分量。-在类中声明,称为类的*成员变量*。-在程序运行期间,这些变量属于每个

2、对象,又称为*对象的属性*。4变量成员变量和局部变量的区别:a.作用域不同b.初始值不同c.同一方法中,局部变量不可重名不同方法中,局部变量可重名成员变量不可重名d.两类变量重名时,局部变量有更高优先级4方法:-在类中声明,被全体对象共享(复用)的计算过程或算法。复用了算法,即复用了计算过程。-好处:可以定义一份算法,被全体对象使用。5.引用类型变量Java中除了基本类型的变量,其余的都是引用类型的变量!1)引用类型太多太多-String str-Integer Long Double/什么时候用的?-int ary-Scanner console2)“类”类型和数组类型声明的变量都是引用类型

3、3)引用类型特点:-引用类型的值是被引用对象的堆地址值。-引用类型通过地址间接引用了对象-java中的引用类型变量用于操作数据(引用类型变量的作用)-两个引用可以引用同一个对象-两个变量的地址值一样-一个引用类型变量,只能存储一个对象的地址-引用变量可以赋值为null,表示不引用任意对象-此时如果调用了其属性/元素/方法将出现空指针异常。(空指针异常的两个条件)为什么使用引用类型变量:相当于对象的标签,用来区分不同的对象。注意:变量本身不是对象,只是引用了对象,所以叫引用类型变量,一个变量只能引用一个对象,但是一个对象可以被多个变量所引用。一个变量能够先后引用不同的对象,但是同一时间只能引用一

4、个对象。 注意:同一个包里不能有同名类。6内存管理1)局部变量在栈中分配。/java中方法中的变量都是局部变量?2)对象在堆中分配,含对象的属性。new 的操作都在堆里!new运算的返回值就是一个地址,是对象的首地址。栈:运行时的局部变量堆:运行时new操作分配的内存空间都在堆中3)方法区:装的是算法,装的是运行时的代码-方法区中可以创建多个对象,但是方法区中只加载一次类文件7空指针异常(有三个经典案例可以看)1)是java应用程序最常见异常2)引用类型为null,并且访问了其属性/元素/方法时 发生空指针异常 -引用为null-访问 属性/元素/方法3) 解决办法a.使变量在访问 属性/方法

5、之前,合理赋值b在调用方法之前,检查变量是否为null,避免调用null引用的属性/方法-if(c5!=null)int n=c5.row;8.对象属性的默认初始化1)对象的属性自动初始化2)其值为“零”值-byte short int long:0-float double :0.0-boolean:false-char:编号为0的字符,不能随便输出此值-引用类型:null3) 构造器(构造方法):封装属性初始化过程,封装以后就可以被反复重用。简化了对象的创建过程。提示:构造器用于*重用*对象属性的初始化过程。构造器语法:1.在类中定义2.其构造器名与类名完全一致/判断是否是一个构造器的规则

6、!-大小写要一致3.不能定义返回值,也不能写void-如果定义了返回值是普通方法-其目的是初始化属性,不是计算过程,不是方法!9. 默认构造器(默认构造方法)1)每个类都有构造方法!2)如果源码中不定义构造器,则编译器自动添加默认构造器(一个无参数的构造器)。3)如果类中定义了构造器,则java编译器不再添加默认构造器。构造方法的重载:为了使用方便,可以对一个类定义多个构造方法。10. this()(有案例)构造器中使用this()关键字:功能:调用本类的其他构造器在一个构造器中调用本类其他构造器,目的是实现构造器之间的逻辑复用,一个构造器重复使用另外一个构造器的属性初始化逻辑,减少了当前构造

7、器的代码。提示:this()好处是实现构造器的逻辑复用语法:1)一定在构造器中使用-类中至少存在两个以上的构造器-往往一个是主构造器,被另外一个辅助构造器调用。-方法中不能使用this()2)必须在构造器中的第一行-this之前如果有代码会出现编译错误。11. 方法重载在类中,方法名相同,参数不同(签名不同),称为方法的重载。-注意:重载是方法名相同的完全不同的方法!使用了方法重载,可以是方法(API)设计的很优雅。12注意:打印数字数组要把数字数组通过Arrays.toString(ary)来输出;打印字符数组可以按数组名直接来输出:13. 重载方法的调用规则:按照方法名和参数类型匹配对应方

8、法-如果能够直接配置类型,就直接调用/如果没有匹配类型的方法,那就显示编译错误!-如果不能直接匹配,就尽可能“短”自动类型转换匹配就是说,如果类型不匹配,则按照自动类型转换调用-注意:只与参数类型有关,和参数值无关。/调用方法的时候只按照变量类型调用,不管变量的值14this自关键字的使用:用于指向本类中的当前对象This可以省略,有没有都可以,在运行期间,代表调用方法的这个对象,好处是可以使所有对象使用此方法!Cell c1=new Cell(0,3);/本句过程,先new一个对象,再调用构造函数给属性赋初值Public Cell(int r,int c)row=r;col=c;c1.dro

9、p();/drop(c1)public void drop(int step) (Cell this=new Cell) /默认:省略括号里Cell this this.row+=step;什么时候什么时候this必须写:必须写:当属性(实例变量)和局部变量名称冲突时(重名)时,不能省略this。案例:class Cellint row,col;/row,col既是属性变量又是局部变量时public Cell(int row,int col)this.row=row;this.col=col;15.常用名称等价对象=实例对象属性=实例变量目录=文件夹存储=磁盘=硬盘遍历=迭代16.引用类型数组

10、数组本来就是引用类型!数组是对象,数组变量是引用类型变量。数组的属性就是:0 12,也会有空指针异常!引用数组:元素是引用变量的数组,其实类似于类的属性是引用类型的情况。注意:一个包里的类可以随意互相调用!引用的值就是对象的首地址,引用一个创建对象!17#垃圾回收器System.gc()方法:请求垃圾回收器来回收垃圾用于建议虚拟机马上调度GC线程回收资源,用得不多,不是必须的,垃圾回收器也会定时清理垃圾。18.内存泄漏:OutOfMemoryError:Java heap space1).当大量的在堆中创建对象2)创建之后的对象无法回收(即对象一直有引用)就会发生内存不够的现象,会使程序崩溃。

11、解决或避免内存泄漏的方法:1)将引用变量置空null2)Foo foo=new Foo(); /光这句也不会发生内存泄漏!因为数据未放入数组,该变量是局部变量用完会清除,这样对象就会去引用,然后被垃圾回收器回收19. 二维数组:二维数组是假的数组的元素可以是任意类型,当数组的元素也是数组的时候,就是所谓的二维数组。元素是一维数组的一元数组是二元数组案例:intarr=new int3;20.继承泛化的过程:从子类中抽取公共(重复)的东西放父类里面,这个过程叫泛化。思考的过程基本上是与实现的过程是相反的。总结:类中有重复-父类运算流程中有重复-方法变量和方法有重复-封装到类里注意:父类中的构造器

12、不能被子类继承,但是创建子类对象的时候一定会执行一次父类的构造器!在父类中可以声明一个被子类共享的构造器,这样子会使子类写构造器的时候简化!21.super()其作用在子类构造器中调用父类的构造器。好处:用于多个子类构造器复用父类构造器中的初始化算法。1)如果子类中不写super(),Java编译器默认添加!-在Java中,子类一定会调用父类的构造器-默认调用父类的无参数构造器!!如果父类没有无参数构造器,则发生编译错误。(如果在子类构造器中,没有明确声明super(),自己默认会写,用来是调用父类中无参的构造器!)2)Super()只能写在子类构造器的第一行-技巧:在父类中都添加无参构造器,

13、可以减少子类的编译错误。23.向上造型:父类变量可以引用子类型对象,也称为子类型向上造型为父类型。向上造型以后,父类型变量,只能调用父类中声明的属性和方法。强制类型转换:如果仍然需要访问子类型的属性和方法,就必须将变量强制转型为子类型,然后再访问。1). java 的编译器是不执行任何方法,不知道任何方法的具体返回值2)java 的编译器是不知道任何变量的值24.重写(覆盖):方法的重写(覆盖)可以重写(覆盖)继承自父类的方法,即方法名和参数列与父类的相同,但是方法实现不同。在子类中,如果对继承的方法不满意,则可以利用重写对继承于父类的方法进行*修改*。语法:1)在子类中添加一个与父类签名一样

14、的方法。2)返回值要兼容,修饰词要更加开放,异常可以更加具体。3)一般情况下,重写的方法与父类型的声明完全一样!提示:子类中添加了一个与父类完全一样的方法注意:不可继承的方法,不能进行重写。私有的方法,静态的方法,构造方法(构造器)不能被继承,属性没有重写!重写方法的调用规则:调用运行期间具体对象的方法!25.super.在子类型对象中引用父类型对象的隐含变量,访问父类型中声明的属性和方法。Super.只能用在子类型中!提示:当前对象的属性/方法与父类对象的属性/方法名称冲突时候,不能省略super.重载和重写混合使用的经典案例:1).执行的是对象中的重写的方法时,看调用该函数的对象2)执行的是重载的方法时,看方法的参数类型

展开阅读全文
相关资源
相关搜索

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

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