java基础知识点整合.pdf
《java基础知识点整合.pdf》由会员分享,可在线阅读,更多相关《java基础知识点整合.pdf(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象3.1面向对象介绍1.什么是面向对象对象其实就是现实生活中的各种物体,他们有各种各样的功能,当我们需要借助这些物体去完成我们的需求时,我们就是在面向这些对象,使用它们其中的功能,至于他们其中的功能是如何实现的,我们无需知道,只要能完成需求即可.2.什么是面向对象编程():是一种编程思想,使用对象去进行编程.它的特点有:封装,继承,多态3.对象从哪来:对象是需要先用类来描述,然后使用类来创建.类是对象的描述,对象是类的实例.4.面向对象的优点提高代码复用性.使用者无需关心对象其中是如何实现的.让程序员从一个编写者转换成一个使用者.更加符合人的思维能力,使编程更简单.3.2 定义类1.成员
2、变量在类中用变量来描述这一类对象公有的特征.2.成员函数在类中用函数来描述这一类对象公有的行为.3.3 创建和使用对象1.怎么创建使用 类名()”形式创建一个对象2.怎么使用通过 .“语法来访问类的成员.例如:p=();=张三”;();3.4 对象的初始化过程1.加载类类在第一次使用的时候被加载到内存中2.初始化成员变量当创建对象的时候,成员变量会初始化为默认值,基本数据类型都是0,引用数据类型都是3.5 对象的生命周期1.开始关键字创建对象的时候,生命周期开始2.结束没有任何引用指向对象,该对象成为垃圾,被虚拟机回收3.6 匿名对象1.什么是匿名对象没有任何引用指向的对象,就叫匿名对象2.匿
3、名对象有什么特点匿名对象在创建之后立即被回收,只能使用一次3.7 封装1.什么是封装封装就是将一类事物的特征和行为封装在一个类中,定义成成员变量和成员函数创建对象之后,这些成员函数可以访问自己的成员变量2.对成员变量的封装使用关键字将成员变量私有化如果需要对外部提供访问方式,写公有的,方法3.8 构造函数L什么是构造函数构造函数是一个特殊的函数.函数名必须和类名一致.没有返回值类型.(不等于,不能写任何返回值).可以写,但是不能写值(尽量不要写).关键字创建对象时自动调用2.应用场景如果我们希望一段代码在创建对象的时候执行,就可以写在构造函数中通常我们使用构造函数对成员变量进行赋值3.构造函数
4、和成员变量的执行顺序成员变量优先于构造函数先执行,因为通常使用构造函数都是对成员变量进行初始化,所以如果没有成员变量,构造函数是没有任何意义的.4.构造函数的重载和普通函数一样,参数列表不同(类型不同,顺序不同,个数不同)即可.重载只与参数列表有关5.构造函数的调用在创建对象时自动调用.在构造函数的第一条语句可以使用”(被调用的构造函数的实际参数)”的形式调用该类其他构造函数.6.自动生成构造函数在一个类中构造函数是一定存在的.因为在一个类中如果没有写任何的构造函数,编译时也会自动生成一个无参的构造函数,里面什么代码都没有.如果写了任何一个构造函数,那么就不会有自动生成的了注意:我们在类中只写
5、了一个有参构造函数的时候,这个类就不能使用无参的构造函数创建对象了7.构造函数的访问权限通常构造函数的访问权限都是公有的,因为构造函数就是为了让别人创建对象时调用的个别情况下在定义类时不希望外部创建对象,这时可以使用修饰构造函数,例如:单例设计模式03.9成员代码块(构造代码块)1.什么是成员代码块在类中使用”“定义一段代码,这段代码在创建对象的时候会自动运行2.成员代码块和构造函数的区别构造函数在创建对象的时候是N个 选1个调用而代码块是一定执行构造函数可以传入参数代码块不能传入参数3.创建对象时内存中的工作顺序在内存中查找指定的类,如果没有就加载类,有则直接引用在内存中开辟一块空间,将成员
6、变量初始化为默认值,0和按照类代码从上到下的顺序,执行代码块或者成员变量赋值执行构造函数中的代码4.在方法中也可以写代码块(方法代码块),但是不常用3.10成员变量和局部变量1.成员变量在类中定义的变量,(),在整个类都可以访问(用于描述着一类事物的共有特征).成员变量随着对象的建立而建立,存在于对象所在的堆内存中.成员变量有默认初始值(0)2.局部变量在方法/语句中定义的变量(),存在于栈内存中.作用范围一结束,变量的空间会自动释放.局部变量是没有初始值的.3.同名问题在同一个作用域中成员变量不能重复,局部变量也不能重复但是成员变量和局部变量可以同名,他们互相不冲突4.访问问题在局部变量和成
7、员变量同名的时候,如果直接用变量名访问一个变量,那么是先找局部变量,如果不存在才找成员变量这时如果不想找局部变量,直接找成员变量,应该用”变量名”3.11关键字1.构造函数中”(参数)”形式可以在构造函数的第一条语句中调用其他的构造函数”.成员名”形式可以调用当前对象的成员2.普通函数中用在普通的函数中,可以代表调用当前函数的对象哪个对象调用所在的函数就代表那个对象.3.内部类中可以使用外部类名成员来访问外部类的成员.3.12静态()变量1.什么是静态变量用修饰的成员变量就是静态变量(随着类的加载而加载)优先于所有非静态成员及成员代码块.2.静态变量和普通变量有什么不同静态变量在类加载后就初始
8、化,不用创建对象可以直接使用.静态变量被类的所有对象共享(在共享区),通过一个对象改变,所有对象都改变.静态变量可以使用“类名变量名”形式访问,推荐使用这种方式,而不是通过对象访问.3.类在什么时候加载类在第一次使用的时候加载例如:创建对象,使用静态变量,使用静态方法定义变量的时候不加载类.4.静态变量在什么时候使用在定义一个类的时候,如果希望这个类的所有对象共享一个数据时,就可以使用静态成员变量.3.13静态()方法L什么是静态方法用修饰的方法就是静态方法静态方法类加载后可以直接运行可以使用”类名.方法名”调用2.什么时候使用静态方法如果一个方法没有访问任何外部的非静态成员,那么就可以定义为
9、.这样在调用的时候不用创建对象即可使用,给人提供方便,并且效率更高.3.静态方法使用的注意事项1.静态方法不能直接访问方法外非静态成员.因为静态方法是随着类的加载而加载 的,而非静态成员只有在对象创建才会加载.因此,当静态方法访问方法外非静态成 员,对象不一定被创建,所以不能直接访问,除非在静态方法中创建本类对象,才可以 访问,方法外静态成员.2.与静态方法不能直接访问方法外非静态成员相反,非静态方法是可以访问静态成 员的,因为,对象被创建了,这个类一定被加载到内存中,所以可以访问.3.因为静态优先于对象存在,所以在静态方法中是不能出现这两个关键 字,道理很简单,静态被加载时还没有对象,而这两
10、个关键字都和对象有关,所以不能 使用.4.静态的利与弊静态好处:1.如果一个类里的某一个成员变量,他的所有需要共同使用它,没 必 要 每 一 个 对象都存储一份,可以将成员变量设为,系统将进行单独空间(方法区/静态区)存储,节省内存空间.2.静态的成员可以直接被类名调用,使用简单.静态弊端:1.因为静态是随着类加载而加载的的,所以其生命周期是和类同存亡的.所以生命 周期很长,比较浪费内存空间.2.因为静态只能访问静态,所以访问有一定的局限性.3.因为主函数是静态的,所以用主函数调用的方法再不创建对象的情况下,只能都 是静态的.3.14静态代码块1.什么是静态代码块用修饰的代码块类加载后直接运行
11、,只能执行一次(因为类只会加载一次),如果在一个类中有主函 数,他是优先于主函数运行的.不能访问外部非静态成员2.什么时候用静态代码块在定义一个类的时候,如果希望某一段代码在别人使用这个类的时候就执行,那么 就可以写在静态代码块中用于给类初始化.3.15单例设计模式设计模式:解决某一类问题最行之有效的方法.单例设计模式:让一个类只能创建一个对象.懒汉式和饿汉式饿汉式步骤:1.私有化构造函数.2.创建一个对象,并私有(防止类外改变对象内部内容).3.创建一个公有的,静态的方法,返回本类对象,使类外获取本类对象.懒汉式步骤:1.私有化构造函数.2.创建一个对象引用,并私有(防止类外改变对象内部内容
12、).3.创建一个公有的,静态的方法,判断是否创建了一个对象如果创建了,返回本类对象,如果没有创建,创建一个对象返回,使类外获取本类对象.3.16继承1.什么是继承定义一个类,使用关键字可以继承另一个类,得到父类的所有非私有属性 和方法.2.继承的特点只支持单继承,不支持多继承,但可以多重继承.一个父类可以有多个子类,但一个子类只有一个父类.3 改良多继承的原因?提高代码的安全性,如果一个子类继承多个父类,而这多个父类中有同名的方法,子 类要去访问的话,就不知道要访问哪一个方法了.降低了安全性.4.子类对象创建的过程子类对象之所以能调用父类的方法,是因为在创建子类对象的时候,其内部创建了 一个父
13、类对象.在一个对象时,会先去子类构造函数,中寻找0(如果没有显示指定父类构 造函数)然后创建父类,然后再回到子类中创建对象.调用子类的方法时,虚拟机会先在子类中查找是否包含该方法,如果没有则找父 类.在调用子类构造函数的时候,一定会使用(参数)”形式调用父类构造函数创建 父类对象.子类中必须要有一个构造函数含有调用父类构造函数.和类似,都是必须在构造函数的第一条语句使用如果构造函数写了,那么则不能写,反之亦然如果没写也没写,默认会自动调用父类无参的构造函数5.方法覆盖(重写)覆盖可以让子类将从父类继承来的方法进行扩展,提高代码复用性,减少冗余.覆盖时子父类的方法名子必须相同,包括返回值,参数列
14、表,并且子类的权限必须大 于或等于父类.只能覆盖非私有方法.6.重载()和 重 写()的区别:重载:名字相同,参数列表不同只与参数列表相同.重写:子父类的方法名子必须相同,包括返回值,参数列表,子类的权限必须大于或等 于父类.(如果父类返回值是一个类,子类返回值可以是和父类相同的类或其子类).7.向上转型子类可以当作父类使用,因为父类的功能子类都有f=();如果一个方法要求传入一个父类类型对象,我们也可以传入一个子类对象8.强制类型转换在子类当作父类来用时,不能调用子类特有的成员.如果一定要调用,需要把父类类型强转回子类类型.这种转换叫强制类型转换,在编译时不论类型是否匹配都不会报错,为了程序
15、安全,通常在转换之前使用进行判断.3.17类及其中常用方法1.什么是类类是中所有类的父类,如果定义一个类不继承任何类,默认继承类中的方法会被所有的类继承2任何对象在成为垃圾被销毁之前,都会调用方法类中的方法是空的,什么都没有当我们希望在对象被销毁之前执行一段代码,就可以在类中重写方法,把 要执行的代码写在方法中.3方法可以将一个对象转为字符串表示形式类中的方法返回的是”类名 内存地址”当我们希望调用时返回成员变量的值,就可以重写该方法调用()方法时会自动打印对象的返回值4方法是用来比较两个对象的类中方法默认比较的是对象的地址如果我们希望比较两个对象的属性,那么可以重写方法,在方法内比较所有 的
16、属性在比较字符串时如果希望比较两个字符串的内容,就需要使用,类是重 写了的3.18组合设计模式1.什么是组合设计模式在我们定义一个类的时,如果需要使用另外一个类的方法,就可以用组合设计模式.2.组合设计模式的写法在类中定义一个被组合类型的成员变量通过构造函数组合一个对象,用成员变量引用在方法中使用成员变量调用被组合对象的方法3.组合设计模式和继承的区别不占用继承的位置,当前类组合一个类之后还能继承其他类组合设计模式组合的类不能当作被组合的类使用3.19多态1.多态的体现父类引用指向子类对象.(父类的引用可以接受自己的子类).2.多态的前提类与类之间必须有关系,要么继承,要么实现.子类与父类存在
17、覆盖,因为在不强转的情况下,父类,不能访问子类特有的方法.3.多态的好处提高代码扩展性.4多态的弊端虽然提高了扩展性,但是只能使用父类父类引用访问父类成员(共有成员),为了能访问子类特有方法,父类的引用必须转成子类类型(向下转型).3.20抽象L什么是抽象类用修饰的类就是抽象类,抽象类中可以定义抽象方法2.什么是抽象方法用修饰的方法就是抽象方法,抽象方法在子类中必须全部重写3.什么时候用抽象类和抽象方法在我们定义类的时候,如果多个类有相同的方法,那么就应该把这些方法抽取到父 类中定义完全相同的方法直接在父类中定义并实现,如果只有方法签名(无方法体)一样而实 现不同,那么就可以在父类中定义抽象方
18、法这样别人看到父类的时候就知道子类都有什么功能了,方便他人阅读我们的代码,也更好的支持了多态.4.抽象类细节有抽象方法的类必须声明为抽象类,抽象类可以没有抽象方法抽象类不能创建对象子类继承抽象类时必须重写所有的抽象方法3.21修饰符L代表最终的,可以用来修饰类,方法,变量.2.被修饰后的特点的类不能被继承的方法不能被重写的变量只能赋值一次,在程序运行结束前,会一直存在与内存中.如果内部类在局部位置上,只能访问该局部中被修饰的变量.被修饰的形参,第一次赋值是在调用它所在的函数时,不能再次赋值了.被修饰的引用类型变量,不能在指向其他对象,但是他第一次指向的对象中的 内容是可以改变的只是修饰了引用.
19、修饰的变量时全局变量,可以使用类名调用,名字全部大写3.22模板设计模式L什么是模板设计模式在编程的过程当中,如果经常要做一些类似的事,其中某些步骤相同,有些步骤不 同,这是就可以使用模板设计模式2.怎么使用模板设计模式定义一个抽象类定义一个的方法在方法中写出每次相同的步骤,不同的步骤写成抽象方法,调用抽象方法每次实现不同的步骤时,定义子类继承抽象类,重写抽象方法即可,相同的步骤无 需重写直接调用方法3.23 接口1.什么是接口接口是一种特殊的抽象类2.接口和抽象类的区别抽象类用定义,接口用定义抽象类中可以有不抽象的方法,接口中所有方法都是抽象的抽象类用继承,接口用实现抽象类可以继承抽象类,接
20、口可以继承接口抽象可以继承接口,接口不能继承抽象因为抽象类里面有可能会有非抽象方法.抽象类中的方法没有默认修饰符,接口中的方法默认是修饰的抽象类中的成员变量没有默认修饰符,接口中的成员变量默认是 修饰的一个类只能继承一个抽象类,一个类可以实现多个接口3.什么时候用抽象类,什么时候用接口能用接口的时候就不用抽象类(没有任何不抽象的方法),因为接口不占用继承位置如果需要定义不抽象的方法,那么就必须使用抽象类.3.2 4策略设计模式定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。使得算法可独立于使用它的客户而变化。步骤:1.定义一个过滤器接口,定义一个抽象方法,用于不同方法的扩展2.根
21、据不同用户的需要,实现接口方法.3.将接口作为参数,传入调用它的方法.3.2 5 内部类一类中的内部类1.什么是类中的内部类在类级别下定义一个类,这就是类中的内部类内部类也是外部类的一个成员内部类必须先创建外部类对象才能创建对象.语法:外部类0 内部类();2.内部访问外部类的成员内部类中可以访问外部类的成员,使用“外部类名成员名”形式“外部类名”就代表调用当前方法的对象的外部类对象3.注意外部类不能访问内部类成员内部类的文件名是带a 的4.什么时候使用内部类在定义一个类的时候,如果需要定义另一个类,而且这个类需要访问当前类的 私有成员,那么这个新的类就可以定义为内部类.二.静态内部类1.什么
22、是静态内部类使用修饰的类中内部类不用创建外部类对象,直接创建对象.语法:外部类.内部类02.静态内部类的特点可以定义静态成员不能使用“外部类”不能访问外部非静态成员3.什么时候使用静态内部类如果定义一个内部类时,不需要访问外部非静态成员,就可以定义为静态内部 类如果内部类中需要定义静态成员,只能定义为静态内部类三方法中的内部类1.什么是方法中的内部类在一个方法中定义的类就是方法中的内部类方法中的内部类只能在当前方法中使用2.方法中内部类的特点使用方法中内部类和普通的类中内部类相同都可以通过”外部类名成员名”访问外部类成员3.什么时候使用方法中的内部类如果一个类只在某个方法中使用,就可以定义为方
23、法中的内部类4.访问局部变量的问题方法中内部类如果要访问一个方法中的局部变量,这个变量必须是的四.匿名内部类1.什么是匿名内部类匿名内部类是方法中内部类的一种如果一个类只使用一次,那么就可以定义为匿名内部类2.定义方式父类名0 类 定 义 这样做是声明一个指定类的子类,然后用这个子类创建一个对象4.1何为多线程有多条执行路径的程序,就是多线程程序.(如:迅雷,暴风影音)有多条执行路径的进程,就是多线程进程.4.2 进程与线程线程:就是进程中的一个控制单元,一条执行路径,线程控制着进程的执行,每个进程里至少有一条线程.进程:是一个正在执行的程序,每个进程都有一个执行顺序,该顺序是一个执行路径,或
24、者叫控制单元.其实进程就是一个应用程序运行时的内存分配空间.4.3 中的线程分配在启动时会有一个进程.该进程中至少有一个线程负责程序的运行,而且这个线程运行的代码都存在于函数中,这条线程被称为主线程.一般情况下在启动时,就只有一个线程.(其实在启动时,不只有一个线程,因为在主线程中的代码有可能会产生垃圾需要垃圾回收,如果全部都由主线程来完成,效率会极低,因此还会有一个线程,来专门负责进行垃圾回收.)4.4 线程的随机性因为一个单核的快速切换导致,同一个时间里只有一个线程在运行.因此哪个线程获取到了执行权,哪个线程就执行.4.5 自定义创建线程创建线程有两种方式:继承方式和实现方式.继承方式:创
25、建一个类,继承,由子类覆写方法.具体步骤:1.自定义类,继承类.2.继承类的目的就是要覆写其方法,因为想要让一段代码单独运行,就 需要将这段代码放到方法中.所以要覆写方法,然后将需要新线程运行的 代码写在方法中.3.创建自定义类的对象,成为新的线程对象.4.调用新的线程对象的方法,开启线程,并执行方法中的代码.(方法有开启线程和调用方法两个作用.)实现方式咱定义一个类,实现接口,覆写方法,创建类对象,将实 现接口的自定义类作为参数传到对象.具体步骤:1定义类实现接口。2覆 盖 接 口 中 的 方 法(用于封装线程要运行的代码)。3通过类创建线程对象;4将实现了接口的子类对象作为实际参数传递给类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 基础 知识点 整合
限制150内