java面向对象编程知识点总结_第1页
java面向对象编程知识点总结_第2页
java面向对象编程知识点总结_第3页
免费预览已结束,剩余28页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、java 中实现方法重载的条件 :1、在同一类中2、方法名称相同,参数不相同 (类型、个数、顺序 )3、与访问修饰符和返回类型无关4、如何区分所要调用方法呢 ?* 通过参数进行区分* 方法重载的适用场合 :多个方法功能相同, 只是参数不同, 可以动态根据参数从 而区分调用不同的方法* 好处 :* 在调用时只需要记住 一个方法,从而通过参数进 行区分成员变量与局部变量的区分 :1、所在位置不同 : 成员变量在类中,但不在具体的方 法中以及代码块中 局部变量在方法中以及在代码语句中2、初始值不同 :成员变量声明就可以使用,它会默认进行赋值操作 局部变量就必须声明、赋值才能使用 (它不存在默认值 )

2、3、在内存中存储位置不同*成员变量分配到堆内存中*局部变量分配至栈中4、生命周期不同* 成员变量随着对象的存在而存在,随对象的销毁而销毁* 局部变量是随着方法调用而存, 随着方法销毁而销毁* 对于成员变量为 int 的默认值为 : 0* 对于成员变量为 string 的默认值为 : null* 对于成员变量为 double 的默认值为 : 0.0构造方法的特征 : * 1 、方法名称与类名相同* 2、无返回类型 (理解 :调用构造方法返回当前的对象 )* 构造方法的作用 :* 1 、创建类的对象必须显示调用构造方法* 2 、可以对类的成员进行初始化* 构造方法可以进行重载* 1 、要注意不能无

3、限制进行重载* 2 、一个类提供带全参数与无参的构造方法再加相应的 set实现面向对象的封装* 1 、属性私有化* 2 、提供对应的 public 的 setXxxx()与 getXxx()的方法 相应提供 set 与 get 的方法* set 与 get 的方法命名规则 :* set + StuName = setStuName()* get + StuName = getStuName()3、对 setXxx()方法进行合理性限制静态变量与非静态变量的区别1、非静态变量单独属于某个对象2、而静态变量则属于整个类,多个对象共享的3、静态变量是存储在静态方法区中,而非静态变量则是存 储在堆上

4、(成员变量 )问题 :* 1 、静态变量可以直接用类名调用也可以用对象名来调用 (为什么 )* 2 、静态变量又称之为类变量,静态方法又称之为类方 法* static 关键字能修饰哪些成员 ?* 1 、可以修饰成员变量* 2 、可以修饰成员方法* 3 、可以修饰代码块java 如何进行调试,从而跟踪代码的执行过程1、定义断点2、起动调用 : Debug as (java application)3、进行单步跟踪 (F6 下一步, F5进入里面进行跟踪 )this 关键字1、 this 关键代表当前对象2、使用 this 关键字区分成员变量与局部变量同名3、在本类中使用 this 关键可以调用成

5、员属性与成员方法4、this 关键字可以用来调用构造方法方法(方法5、在一个构造方法中通过 this 关键在调用另一个构造 时必须出现在第一句代码位置构造方法重写的条件* 1 、在继承中 ( 有父类与子类 )* 2 、子类中的方法与父类被重写的方法保持签名一致 名称相同、参数相同、返回类型相同 )* 3 、子类重写的方法的访问修饰符要么与父类保持一致但可 以大* 4 、子类重写的方法不能比父类被重写的方法抛的异常 更大 ,但可以小 (要么是异常类的子类 ) super 关键字* 1 、 super 关键字指向父类对象* 2、通过 super 关键字可以在子类的构造方法中通过它显示 调用父类的构

6、造 方法 ,* 但是必须在子类构造方法的第一句代码位置* 3 、通过 super 关键可以调用父类其他成员,当位置可 随意java 中的继承* 1、继承的原则 :要符合 is-a 关系* 2 、父类中是所有子类的共性的成员* 3 、子类通过 extends 父类* 4 、 java 中的继承只支持单一继承* 5 、子类继承父类以下则不能继承*. 父类 private 成员不能继承*. 父类构造方法不能继承*. 如果是默认的访问修饰符不同包的子类不能继承 (同包的子类可以继承 )继承的好处* 1 、模拟实现世界中对象与对象之间的关系* 2 、提高了代码的重用性访问修饰符作用域* private

7、: 本类* defalut or friendly: 本类 , 同包的子类 , 不同包的子类 不可* protected:本类 , 同包的子类可以 or 同包的非子类也可 , 不同包的子类可以 or 不同包的非子类则不可* public : all抽象类 abstract 有什么作用 :1、模拟现实世界中对象与对象之间的关系* 2 、可以适当提高代码重用、对于扩展与维护有利(1) 把多个共性的东西提取到一个类中,这是继承的做法。但是呢,这多个共性的东西,在有些时候,方法声明 一样,但是方法体。也就是说,方法声明一样,但是每个具体的对象在具体实现的时候内容不一样所以,我们在定义这些共性的方法的时

8、候,就不能给 出具体的方法体。而一个没有具体的方法体的方法是抽象的方法。在一个类中如果有抽象方法, 该类必须定义为抽象类。(2) 抽象类的特点A:抽象类和抽象方法必须用关键字abstract 修饰B:抽象类中不一定有抽象方法 ,但是有抽象方法的类一 定是抽象类C:抽象类不能实例化D:抽象类的子类a:是一个抽象类。b:是一个具体类。这个类必须重写抽象类中的所有 抽象方法。(3) 抽象类的成员特点:A:成员变量有变量,有常量B:构造方法有构造方法C:成员方法有抽象,有非抽象(4) 抽象类的几个小问题A:抽象类有构造方法,不能实例化,那么构造方法有 什么用 ?用于子类访问父类数据的初始化B:一个类如

9、果没有抽象方法 ,却定义为了抽象类,有什 么用?为了不让创建对象C:abstract不能和哪些关键字共存a:final 冲突b:private 冲突c:static 无意义多态1、 java 中构成多态的条件* . 要有继承* . 要有重写* . 父类的引用指向子类的对象 ( 也可以指向父类 自身的对象 )(1) 同一个对象在不同时刻体现出来的不同状态。(2) 多态的前提:A:有继承或者实现关系。B:有方法重写。C:有父类或者父接口引用指向子类对象。多态的分类:a:具体类多态class Fu class Zi extends Fu Fu f = new Zi();b:抽象类多态abstract

10、 class Fu class Zi extends Fu Fu f = new Zi();c:接口多态interface Fu class Zi implements Fu Fu f = new Zi();(3) 多态中的成员访问特点A:成员变量编译看左边,运行看左边B:构造方法子类的构造都会默认访问父类构造C:成员方法 编译看左边,运行看右边D:静态方法 编译看左边,运行看左边 为什么 ?因为成员方法有重写。(4)多态的好处:1、模拟了现实世界中对象与对象之间的关系* 2 、提高了代码的可重用性* 3 、提高了程序可扩展性 ( 灵活性 )A:提高代码的维护性 (继承体现 )B:提高代码的扩

11、展性 (多态体现 )(5)多态的弊端: 父不能使用子的特有功能。 现象:子可以当作父使用,父不能当作子使用 多态中的转型A:向上转型从子到父从子类到父类的类型适用于自动类型转换* 向上转型 :从子类到父类的类型 ( 前提 :要有继承 )* 特点 :子类能够访问的层面只能站在父类对象来 看,来能看到的只是被子类重写的方法 ,* 自身所特殊的方法则调用不到。B:向下转型从父到子向下转型 (强制类型转换 )* ( 子类 ) 父类对象* 存在问题 :可能会产生 classcastException类( 型转换 异常)* 如何避免 :使用 instanceof 运算符final 关键字使用 final

12、关键字修饰成员属性 (常量 ) final 可以修饰成员方法 (表示该方法不能重写 )如果某个类被 final 修饰了,表示该类不能继承(1) 是最终的意思,可以修饰类,方法,变量。(2)特点:A:它修饰的类,不能被继承。B:它修饰的方法,不能被重写。C:它修饰的变量,是一个常量。(3)面试相关:A:局部变量a:基本类型 值不能发生改变b:引用类型 地址值不能发生改变,但是对象的 内容是可以改变的B:初始化时机a:只能初始化一次。b:常见的给值定义的时候。 (推荐 )构造方法中绑定的类型1、动态绑定 :一定在运行过程中,通过具体的传参才能 决定的 (后期绑定 )2、静态绑定 :在编译期间就能够

13、决定的 (前期绑定 )第 4 章 Java 中的接口1、 Java中接口语法2、 语法 1:3 、 修饰符 interface接口名 extends 父接口 1, 父接口 2, 4 、常量定义5 、方法定义6、7、 语法 2:8 、 class 类名 extends 父类名 接口 1, 接口 2, 9 、 类的内容10 、 接口说明A. 接口和类、抽象类是一个层次的概念, 命名规则相同。 如果修 饰符是 public ,则该接口在整个项目中可见。如果省略修饰 符,则该接口只在当前包中可见。B. 接口中可以定义常量, 不能定义变量。 接口中属性都会自动用public static final 修

14、饰,即接口中属性都是全局静态常量。 接 口中的常量必须在定义时指定初始值。1. public static final PI = 3.14;2. int PI = 3.14;/ 在接口中, 这两个定义语句效果完全相 同3. int PI;/ 错误,在接口中必须指定初始值, 在类中会有默 认值C. 接口之间可以通过 extends 实现继承关系,一个接口可以继承 多个接口,但接口不能继承类。D. 一个类只能有一个直接父类, 但可以通过 implements 实现多 个接口。类必须实现接口的全部方法, 否则必须定义为抽象类。 类在继承父类的同时又实现多个接口时, extends 必须位于 impl

15、ements 之前。E. 接口是一种特殊的抽象类抽象类与接口的区别A. 成员区别 :1. 抽象类 :a) 成员变量 : 可以变量,也可以常量b) 构造方法 : 有c) 成员方法 : 可以抽象,也可以非抽象2. 接口 :a) 成员变量: 只可以为常量b) 成员方法 : 只可以抽象B. 关系区别 :3. 类与类: 继承,单继承4. 类与接口 : 实现,单实现,多实现5. 接口与接口 : 继承,单继承,多继承C. 设计理念区别 :6. 抽象类: 被继承体现的是 is-a 的关系。抽象类中定义 的是该继承体系的共性功能。7. 接口: 被实现体现的是 like-a 的关系。接口中定义的 是该继承体系的扩

16、展功能。 ( 在许多框架中都采用面向 接口编程的思想 )理解如果说子类继承超类是 “is a,”即“是”的关系,类和支持类之间是 “has a”,即“有”的关系,或称 “组合”,那么类和接口则是 “likea ”,即 “像 是”的关系。接口表示,所有实现了我这个接口的类都具有我规定的 协议,即“看起来都像我 ”,确切地说, “看起来都像我的签名 ”第 7 章 Java 中的常用类(1) java 八个基本数据类型 : byte , char , short , int , long , float , double , boolean(2) 对应的八个包装类型 :Byte , Characte

17、r , Short , Integer , Long , Float , Double , Bool ean都位于 java.lang 包中(3) 装箱与拆箱 :(JDK1.5(java5.0) 开始支持装箱与拆箱 )A:装箱 : 基本类型 - 包装类型 (Integer a = 12)B:拆箱 : 包装类型 - 基本类型 ( int c = a;) int c = Value();C:包装类方法 : .xxxValue() 拆箱 , .valueOf() 装箱(4) 包装类扩展题 :A: Integer a = new Integer(12) ; Integer b = new I

18、nteger(13);System.out.println(a = b);String 类 (字符串起来形成字符串 or 字符串是字符的数组 )(1) public final class String . : 该类不能派生子类 ( 不能继承 )(2) String 对象不可变(3) 频繁拼接效率低(4) 常用方法. int length(): 返回字符串的长度方法 (字符的个数 ), 注意与数组 length 属性区别 ;. boolean equals(Object object): 将此字符串与指定的对象比较 ;该方法是继承自 Object 中 ,String 类中对该方法进行了重写 ,

19、用于比较 两字符串对象的值是否相等 ; ( = 进行说明 ). int indexOf(.) : 返回指定的字符或字符串在该字符串第一次出现 的索引位置如果存在则返回具体的索引位置 ,否则返回-1(-1 表示不存在 )例如 :邮箱地址中是否存在 与 . 符号则可以使用 indexOf() 方法;. int lastInd exOf(.):. char charAt(int index): 在指定的位置提取单个字符 ;. String subString(.) : 截取字符串方法 ;. String concat(String str) : 拼接字符串 (使用+ 做连接). String rep

20、lace(.): 替换方法. String trim(); 过滤该字符串前后空格. String toLowerCase() : 转换为小写. String toUpperCase() : 转换为大写. int compareTo(String anotherString) : 按字典顺序比较两字符串. static String format(.) : 格式化字符串StringBuffer类String , StringBuffer(JDK1.0) , StirngBuilder(JDK5.0) 区别A:string 不可变 ,后二者可变 ;B:stringbuffer 就线程安全的 ,而

21、StirngBuilder 是线程不安全的 ;C:效率 : StirngBuilder StringBuffer StringD: String 、 StringBuffer 、StringBuilder 都是被 final 修饰的,是 不能够被继承改写的第 8 章 Java 中的集合CollectionList 集合1、List-ArrayLis实t(现类 ):一个有序集合 ,可以允许重复元素、可以存 null 元素有序 (存储有先后顺序 )ArrayList在哪些场合下使用 :在循环遍历与随机访问时推荐使用Set 集合set 集合的特点 :* 1 、它是无序* 2 、只能存一个 null*

22、 3 、不许重复泛型集合 LinkedListLinkedList 集合适应场合 :对于频繁插入与删除则选它Map 集合 (key,value)HashMap: 特点* 1 、用于 key-value 对应的关系* 2 、键不允许重复 ( 如果重复会发生覆盖) ,值可以重复第 9 章 JAVA 中的流1、 File类2、 java 中的流(1) java 中操作流的类都位于 : java.io 中(2) 流的分类A: 按照流的流向分 : 输入流与输出流. 输入流 : 只能从中读取数据 ,而不能向其写出数据 ;. 输出流 : 只能向其写出数据 ,而不能从中读取数据 ;. 说明 :数据从内存到硬盘

23、 , 通常称为输出流 , 这里的输入、输出都 是从程序运行所在 内存的角度来划分的B: 按照处理的数据单元不同 :. 字节流 :字节流操作的最小数据单元是 8 位字节。. 字符流 : 而字符流操作的最小数据单元是 16 位字符。C: 按照流的角色 :. 节点流 :节点流也被称为低级流 ;(可以从 / 向一个特定的 IO 设备 如磁盘、网络 )读 / 写数据的流 ). 处理流 : 用于对一个已存在的流进行连接或封装 ,通过封装后流 来实现数据读 / 写功能。(3) 字节流与字符流A:字节流.InputStream:字节输入流 ;.OutputStream:字节输出流 ;B:字符流.Reader:

24、字符输入流 ;.Write:字符输出流 ;3、字节流与字符流的具体类(1) FileInputStream(2) FileReader(3) FileOutputStream(4) FileWrite4、转换流(1) 输入/输出流体系里还提供了 2 个转换流 ,这两个转换流用于实现 将字节流转成字符流 ,其中 InputStreamReader 将字节输入流转换成字符输入流 ,OutputStreamWriter 将字节输出流转换成字符输出流。序列化(1) 序列化的含义 :序列化机制允许将实现序列化的 java 对象转换为字节序列 ,这些 字节序列可以保存至磁盘上或通过网络传输 ,以备以后重新

25、恢复成原 来对象。序列化机制使得对象可以脱离程序的运行而独立存在。(2) 如何实现对象序列化 序列化操作 :A:将类实现序列化接口 (Serializable)B:创建一个 ObjectOutputStream 输出流ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(Object.txt);C:调用 ObjectOutputStream 对象的 writeObject 方法输出可序列化对象 Person per = new Person();oos.writeObject(per);反序列化 :A:创建一个

26、 ObjectInputStream 输入流ObjectInputStream ois = new ObjectInputStream(new FileInputStream(object.txt);B:调用 ObjectInputStream 的 readObject 方法读取流中的对象Person person = (Person) ois.readObject();sysout(person.getPerName() + t + person.getPerAge)第 10 章 Java GUI 和 swingswing体系:(1)JFrame:Object|-Component|-Container|-window|-Frame|-JFrameswing pk awt(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论