Java⾯向对象知识点总结
⼀、类和对象
(1)类:类是模⼦,确定对象将会拥有的特征(属性)和⾏为(⽅法)。
类的特点:类是具有相同属性和⽅法的⼀组对象的集合。
(2)对象
创建对象:类名 对象名 = new 类名()
使⽤对象:对象.属性  /  对象.⽅法名()
(3)成员变量与局部变量
成员变量:在类中定义,⽤来描述对象将要有什么。(作⽤域在整个类内部都是可见的)
局部变量:在类的⽅法中定义,在⽅法中临时保存数据。(作⽤域仅限于定义它的⽅法)
区别:
①作⽤域不⽤
②两类变量同名时,局部变量的优先级更⾼
③初始值不同:Java会给成员变量⼀个初始值,不会给局部变量赋予初始值
(4)构造⽅法:定义在Java中的⼀个⽤来初始化对象的⽅法。
①使⽤new+构造⽅法 创建⼀个新的对象。
②名称与类名相同且没有返回值。
③当没有指定构造⽅法时,系统会⾃动添加⽆参的构造⽅法。
④当有指定构造⽅法时,⽆论是有参、⽆参的构造⽅法,都不会⾃动添加⽆参的构造⽅法。
⑤构造⽅法可重载:⽅法名相同,但参数不同,调⽤时会⾃动根据不同的参数选择相应的⽅法。
⑥构造⽅法不但可以给对象的属性赋值,还可以保证给对象的属性赋⼀个合理的值(在构造函数中增加判断)。(5)static静态变量(也称类成员)
①它属于整个类所有,⽽不是某个对象所有,被类的所有对象所共享。
②静态成员可使⽤类名直接访问,也可以使⽤对象名进⾏访问。
③静态成员属于整个类,当系统第⼀次使⽤该类时,就会为其分配内存空间直到该类被卸载才会进⾏资源回收。(6)static静态⽅法(也称类⽅法)
①静态⽅法中可以直接调⽤同类中的静态成员,但不能直接调⽤⾮静态成员。
②如果系统在静态⽅法中调⽤⾮静态变量,可通过创建类的对象,然后通过对象来访问⾮静态变量。
③在普通成员⽅法中,则可以直接访问同类的⾮静态变量和静态变量。
④静态⽅法中不能直接调⽤⾮静态⽅法,需要通过对象来访问⾮静态⽅法。
(7)初始化块
①普通初始化块
{
xxx = xxx;
}
②静态初始化块
static {
xxx = xxx;
}
③执⾏顺序:静态初始化块最先被执⾏-->普通初始化块-->构造⽅法
⼆、封装
(1)概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,⽽是通过该类提供的⽅法类实现对隐藏信息的操作和访问。(2)好处:只能同规定的⽅法访问数据,隐藏类的实现细节,⽅便修改和实现。
(3)实现步骤
① 修改属性的可见性:设为private
② 创建getter/setter⽅法:⽤于属性的读写
③ 在getter/setter⽅法中加⼊属性控制语句:对属性值的合法性进⾏判断
(4)Java中的包
①作⽤:管理Java⽂件,解决同名⽂件的冲突
②必须放在Java源程序的第⼀⾏,包名间⽤"."号隔开
③包的使⽤:可以通过import关键字在某个⽂件中使⽤其它⽂件中的类,Java包的命名是全⼩写字母
(5)Java中的访问修饰符:可以修饰属性和⽅法的访问范围
①private:只能在本类中访问和使⽤。
②默认:能在本类和同包中访问和使⽤。
③protected:能在本类、同包、⼦类中使⽤。
④public:在本类、同包、⼦类、其它类中使⽤。
(6)Java中this关键字
代表当前对象
this.属性:操作当前对象的属性
this.⽅法:调⽤当前对象的⽅法
(7)内部类:定义在另外⼀个类⾥⾯的类。
作⽤:
①内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同⼀个包中的其他类访问该类。
②内部类的⽅法可以直接访问外部类的所有数据,包括私有的数据。
③内部类所实现的功能使⽤外部类同样可以实现,只是有时候使⽤内部类更⽅便。
分类:成员内部类,静态内部类,⽅法内部类,匿名内部类。
(8)成员内部类(也称普通内部类)
①内部类定义在外部类内部,相当于外部类的⼀个成员变量的位置,内部类可以使⽤任意访问控制符。
②内部类中的⽅法可以直接访问外部类中的数据,⽽不受访问控制符的影响。
③定义了成员内部类后,必须使⽤外部类对象来创建内部类对象,⽽不能直接去new⼀个内部类对象。
即: 内部类 对象名 = 外部类对象.new 内部类()
④外部类不能直接使⽤内部类的成员和⽅法,创建内部类的对象,然后通过内部类的对象来访问其成员变量和⽅法。
⑤如果外部类和内部类具有相同的成员变量或⽅法,内部类默认访问⾃⼰的成员变量或⽅法,如果要访问外部类的成员变量,可使⽤:外部类.this.对象名
(9)静态内部类(static修饰的内部类)
①静态内部类不能直接访问外部类的⾮静态成员,但可通过"new 外部类().成员"的⽅式访问
②如果外部类的静态成员与内部类的成员名称相同,可通过"类名.静态成员"访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过"成员名" 直接调⽤。
③创建静态内部类的对象时,不需要外部类的对象,可以直接创建:内部类 对象名 = new 内部类();
(10)⽅法内部类
⽅法内部类就是内部类定义在外部类的⽅法中,⽅法内部类只在该⽅法的内部可见,即只在该⽅法内可以使⽤。
注意:由于⽅法内部类不能在外部类的⽅法以外的地⽅使⽤,因此⽅法内部类不能使⽤访问控制修饰符和static修饰符。
三、继承
(1)继承时类与类的⼀种关系,是⼀种"is a"的关系
(2)Java中的继承时单继承,只有⼀个⽗类
(3)class ⼦类 extends ⽗类
(4)⽅法的重写
① ⼦类可重写从⽗类继承的⽅法,当调⽤⽅法时会优先调⽤⼦类的⽅法。
② 返回值类型、⽅法名、参数类型及个数 都要与⽗类继承的⽅法相同,才叫⽅法的重写。
(5)继承的初始化顺序
① 初始化⽗类再初始化⼦类
② 属性的初始化在构造⽅法之前执⾏。
③ ⽗类的属性初始化-->⽗类的构造函数-->⼦类的属性初始化-->⼦类的构造函数
(6)final
① 可修饰类、⽅法、属性和变量
② final修饰类,则该类不允许被继承
③ final修饰⽅法,则该⽅法不允许被覆盖(重写)
④ final修饰属性,则该类的属性不会进⾏隐式初始化(类的初始化属性必须有值)或在构造⽅法中赋值(只能任选其⼀)
java面向对象的特征有哪些方面
⑤ final修饰变量,则该变量的值只能赋⼀次值,即变为常量
(7)super关键字
在对象的内部使⽤,可以代表⽗类
(8)Object类是所有类的⽗类,如果⼀个类没有使⽤extends关键字明确标识继承另⼀个类,那么这个类默认继承Object类。
四、多态
继承是多态实现的基础。
(1)引⽤多态:⽗类的引⽤可以指向本类的对象/⽗类的引⽤可以指向⼦类的对象。
(2)⽅法多态:创建本类对象时,调⽤的⽅法为本类⽅法/创建⼦类对象时,调⽤的⽅法为⼦类重写的⽅法或继承的⽅法。
(3)引⽤类型转换
① 向上类型转换:隐式/⾃动类型转换,⼩类型到⼤类型的转换。(⽆风险)
② 向下类型转换:强制类型转换,是⼤类型到⼩类型。(有风险)
(4)抽象类
①应⽤场景:在某些情况下,某个⽗类只是知道其⼦类应该包含怎样的⽅法,但⽆法准确知道这些⼦类如何实现这些⽅法。
②从多个具有相同特征的类中抽象出⼀个抽象类,以这个抽象类作为⼦类的模板,从⽽避免了⼦类设计的随意性。
③限制规定⼦类必须实现某些⽅法,但不关注实现细节。
④ abstract定义抽象类
⑤abstract定义抽象⽅法,只有声明,不需要实现
⑥包含抽象⽅法的类是抽象类
⑦抽象类中可以包含普通的⽅法,也可以没有抽象⽅法
⑧抽象类不能直接创建,可以定义引⽤变量
(5)接⼝
① 接⼝可以理解为⼀种特殊的类,由全局常量和公共的抽象⽅法所组成。
② 类是⼀种具体实现体,⽽接⼝定义了某⼀批类所需要遵守的规范,接⼝不关⼼这些类的内部数据,也不关⼼这些类⾥⽅法的实现细节,它只规定这些类⾥必须提供某些⽅法。
③接⼝定义的基本语法:
[修饰符] interface 接⼝名 [extends ⽗接⼝1, ⽗接⼝2]
{
零个到多个常量定义...
零个到多个抽象⽅法的定义....
}
④Java中⼀个类只能有⼀个⽗类,不够灵活,可通过实现多个接⼝增加灵活性。
⑤接⼝中属性是常量,即使定义时不添加public static final修饰符,系统也会⾃动加上。
⑥接⼝中⽅法只能是抽象⽅法,系统会⾃动添加public abstract
(6)UML
①概念:统⼀建模语⾔或标准建模语⾔,⽀持模型化和软件系统开发的图形化语⾔,为软件开发的所有阶段提供模型化和可视化⽀持。
②常⽤的UML图
⽤例图:能够以可视化的⽅式,表达系统如何满⾜所收集的业务规则,以及特定的⽤户需求信息。
序列图:⽤于安置交互发⽣的⼀系列顺序,显⽰对象之间的这些交互。
类图:UML类图、业务逻辑和所有⽀持结构被⽤于定义全部的代码结构。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。