Java学习笔记大全

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

达内java学习笔记1JAVAJAVAJAVAJAVA的面向对象编程的面向对象编程的面向对象编程的面向对象编程--------------------------------课堂笔记课堂笔记课堂笔记课堂笔记面向对象主要针对面向过程。面向过程的基本单元是函数。什么是对象:EVERYTHINGEVERYTHINGEVERYTHINGEVERYTHINGISISISISOBJECTOBJECTOBJECTOBJECT(万物皆对象)所有的事物都有两个方面:有什么(属性):用来描述对象。能够做什么(方法):告诉外界对象有那些功能。后者以前者为基础。大的对象的属性也可以是一个对象。为什么要使用面向对象:首先,面向对象符合人类看待事物的一般规律。对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。方法的定义非常重要。方法有参数,也可能有返回值。注意区分:对象(本身)、对象的实现者、对象的调用者。分析对象主要从方法开始。我们通过类来看待对象,类是对象的抽象。其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。这样才能使每个对象本身做成最好的。对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。可复用性是OOPOOPOOPOOP的基础。比较面向过程的思想和面向对象的思想:面向过程的思想:由过程、步骤、函数组成,以过程为核心;面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。面向过程是先有算法,后有数据结构。面向对象是先有数据结构,然后再有算法。在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能。从语法上来看,一个类是一个新的数据类型。在面向对象编程中,除了简单数据类型,就是对象类型。定义类的格式:classclassclassclassStudent{Student{Student{Student{代码}}}}注意类名中单词的首字母大写。实例变量:定义在类中但在任何方法之外。(NewNewNewNew出来的均有初值)局部变量:定义在方法之中的变量。局部变量要先赋值,再进行运算,而实例变量均已经赋初值。这是局部变量和实例变量的一大区别。达内java学习笔记2实例变量的对象赋值为nullnullnullnull。局部变量不允许范围内定义两个同名变量。实例变量的作用域在本类中完全有效,当被其他的类调用的时候也可能有效。实例变量和局部变量允许命名冲突。书写方法的格式:修饰符返回值方法名调用过程中方法体可能出现的例外publicpublicpublicpublicint/voidint/voidint/voidint/voidaddNumber(addNumber(addNumber(addNumber(参数))))throwthrowthrowthrowExcepionExcepionExcepionExcepion{}{}{}{}例:publicpublicpublicpublicintintintintaddNumber(intaddNumber(intaddNumber(intaddNumber(inta,inta,inta,inta,intb){b){b){b){}}}}注:方法名中的参数intintintinta,inta,inta,inta,intbbbb为局部变量类方法中的一类特殊方法:构造方法。构造方法是当用类生成对象时,系统在生成对象的过程中利用的方法。注意:构造方法在生成对象的时候会被调用,但并不是构造方法生成了对象。构造方法没有返回值。格式为:publicpublicpublicpublic方法名。构造方法的方法名与类名相同。构造方法是在对象生成的过程中自动调用,不可能利用指令去调用。在一个对象的生成周期中构造方法只用一次,一旦这个对象生成,那么这个构造方法失效。用类来生成对象的语句:StudentStudentStudentStudents=news=news=news=newStudent()Student()Student()Student()。第一个StudentStudentStudentStudent表示这是用StudentStudentStudentStudent类进行定义。“Student()Student()Student()Student()”表示调用一个无参数的构造方法。如果()()()()中有参数,则系统构造对象的过程中调用有参的方法。此时SSSS称为一个对象变量。StudentStudentStudentStudentssss的存储区域存放的是地址:一个对象在硬盘上占有一个连续地址,首地址赋予ssss空间。SSSS称为对象StudentStudentStudentStudent的引用。注意:在对象变量中存放的是引用(地址);在简单变量中存放的是数值。可以构造多个构造方法,但多个构造方法的参数表一定不同,参数顺序不同即属于不同的构造方法:publicpublicpublicpublicstudent(stringstudent(stringstudent(stringstudent(stringname,intname,intname,intname,inta){a){a){a){}}}}publicpublicpublicpublicstudent(student(student(student(intintintinta,stringa,stringa,stringa,stringnamenamenamename)))){{{{}}}}为两个不同的构造方法。如果我们未给系统提供一个构造方法,那么系统会自动提供一个为空的构造方法。练习:写一个类,定义一个对象,定义两个构造方法:一个有参,一个无参。(编写一个程序验证对象的传递的值为地址)注意下面这种形式:staticstaticstaticstaticvoidvoidvoidvoidchangename(studentchangename(studentchangename(studentchangename(studentstu){stu.setNamestu){stu.setNamestu){stu.setNamestu){stu.setName““““LUCYLUCYLUCYLUCY””””}}}}注意生成新的对象与旧对象指向无关,生成新对象生命消亡与旧对象无关。面向对象方法的重载(overloadingoverloadingoverloadingoverloading)和覆盖(overridingoverridingoverridingoverriding)。在有些JAVAJAVAJAVAJAVA书籍中将overridingoverridingoverridingoverriding称为重载,overloadingoverloadingoverloadingoverloading称为过载。OverloadingOverloadingOverloadingOverloading在一个类中可以定义多个同名方法,各个方法的参数表一定不同。但修饰词可能相同,返回值也可能相同。达内java学习笔记3在程序的编译过程中根据变量类型来找相应的方法。因此也有人认为overloadingoverloadingoverloadingoverloading是编译时的多态,以后我们还会学到运行时多态。为什么会存在overloadingoverloadingoverloadingoverloading技术呢?作为应对方法的细节。利用类型的差异来影响对方法的调用。吃()可以分为吃肉,吃菜,吃药,在一个类中可以定义多个吃方法。构造方法也可以实现overloadingoverloadingoverloadingoverloading。例:publicpublicpublicpublicvoidvoidvoidvoidteach(){};teach(){};teach(){};teach(){};publicpublicpublicpublicvoidvoidvoidvoidteach(intteach(intteach(intteach(inta){};a){};a){};a){};publicpublicpublicpublicvoidvoidvoidvoidteach(Stringteach(Stringteach(Stringteach(Stringa){}a){}a){}a){}为三种不同的方法。OverloadingOverloadingOverloadingOverloading方法是从低向高转。ByteByteByteByte—shortshortshortshort—floatfloatfloatfloat—intintintint—longlonglonglong—doubledoubledoubledouble。在构造方法中,thisthisthisthis表示本类的其他构造方法:student(){};student(){};student(){};student(){};student(stringstudent(stringstudent(stringstudent(stringn){n){n){n){this();this();this();this();////////表示调用student()student()student()student()}}}}如果调用student(intstudent(intstudent(intstudent(inta)a)a)a)则为this(intthis(intthis(intthis(inta)a)a)a)。特别注意:用thisthisthisthis调用其他构造方法时,thisthisthisthis必须为第一条语句,然后才是其他语句。ThisThisThisThis表示当前对象。PublicPublicPublicPublicvoidvoidvoidvoidprintNum(){printNum(){printNum(){printNum(){IntIntIntIntnumber=40number=40number=40number=40;System.out.println(this.number);System.out.println(this.number);System.out.println(this.number);System.out.println(this.number);}}}}此时打印的是实例变量,而非局部变量,即定义在类中而非方法中的变量。This.numberThis.numberThis.numberThis.number表示实例变量。谁调用this.numberthis.numberthis.numberthis.number那么谁即为当前(this)(this)(this)(this)对象的numbernumbernumbernumber方法。封装:使对象的属性尽可能私有,对象的方法尽可能的公开。用privateprivateprivateprivate表示此成员属性为该类的私有属性。PublicPublicPublicPublic表示该属性(方法)公开;PrivatePrivatePrivatePrivate表示该属性(方法)为只有本类内部可以访问(类内部可见)。(想用privateprivateprivateprivate还要用setsetsetset和getgetgetget方法供其他方法调用,这样可以保证对属性的访问方式统一,并且便于维护访问权限以及属性数据合法性)如果没有特殊情况,属性一定私有,方法该公开的公开。如果不指明谁调用方法,则默认为thisthisthisthis。区分实例

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功