《java面向对象编程知识点总结》由会员分享,可在线阅读,更多相关《java面向对象编程知识点总结(30页珍藏版)》请在金锄头文库上搜索。
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 的关系。接口中定义的 是该继承体系的扩展功能