Java 学习:⾯向对象笔记整理
Java ⾯向对象笔记整理
基本概念
⾯向对象的三⼤特征:封装、继承、多态
⾯向对象:软件领域中的⼀种哲学思想,
OOA:⾯向对象分析,使⽤OO的思想分析需求
OOD:⾯向对象设计,使⽤OO 的思想设计程序结构
OOP:⾯向对象编程,使⽤OO 的思想开发代码
类与对象
类
类:⼀种数据类型,是对象的模板
寻类
寻类:从需求描述中发现名词,若改名词⽆法⽤已知类型描述,则新建类 语法 代码:
访问修饰符
访问权限
类包⼦类其他包可修饰public
∨∨∨∨类、属性、⽅法protect
∨∨∨×类、属性、⽅法default
∨∨××类、属性、⽅法private ∨×××属性、⽅法类成员
类成员:属性 ⽅法
在⼀个类中可以书写:属性、⽅法、构造函数属性属性:类型的特征,通常为名词,其数据会跟随对象产⽣,跟随对象消亡寻属性:A有B(A包含B),则A是类,B是A的属性
Has a 关系 A和B是两个类 A拥有B 或A拥有多个B 该关系在代码中表现为 B是A的属性 或B的数组是A的属性
定义语法访问修饰符 class 类名{ //属性 //⽅法 //构造函数}
1
2
3
4
5访问修饰符 数据类型 属性名
1
封装
封装:狭义封装 将属性私有化,使⽤get和set⽅法访问
⼴义:将零散的数据组装成类,提供公开的访问⼊⼝,隐藏内部实现
属性必须私有
全部使⽤get和set⽅法使⽤(快捷⽅式)
只有在get和set⽅法中可以直接访问属性,其他位置必须使⽤get和set⽅法⽅法⽅法:是指⼀种动作,往往是动词,若A能B 或A可以则A是类 B是⽅法 ⽅法的⽣命期⽐对象短 它有开始也有结束
Use a 关系 A和B是两个类 当A实施某种⾏为时,会与B的对象产⽣交互 代码表现为A的⽅法中会有B的对象作为参数或返回类型声明语法
This关键词:表⽰当前对象(我)
当前对象 执⾏改代码的对象
This写在哪个类⾥⾯就是哪个类型
在⽅法中,若需要使⽤⾃⾝成员,使⽤this.成员名构造函数
构造函数:在创建对象时运⾏的函数 当⼀个类没有书写构造函数时,会有默认构造函数(⽆参数)作⽤:构造函数通常给属性赋值声明语法
构造函数重载
⼀个类可以拥有多个构造函数,只要参数列表不同
对象
对象: 某⼀个类的数据,⼀个类的⼀个实体
创建对象代码:
在创建对象时,会对属性进⾏初始化,给其赋值为类型默认值。
访问属性的语法
代码:访问修饰符 返回类型 函数名(参数列表){ 函数体}
1
23访问修饰符 类名 (参数列表){ 函数体}
1
2
3new 类名();new 类名 (参数列表);
1
2
调⽤⽅法的语法
值类型和引⽤类型
1. 所有的基本类型(8種)都是值类型,所有的类都是引⽤類型
2. 值类型:存放的是具体的数据
3. 引⽤类型:存放的是对象的地址
4. == ⽐较的是变量中储存的内容是否相等
5. 所有引⽤类型的默认值都是NULL,表⽰沒有地址
6. NullpointerException:空指针错误,⼀个对象为NULL,但是在使⽤他的成员時引发该错误
7. 函数调⽤复制的是引⽤参数的地址继承
Is a 关系: 继承:如果A和B都是类,B是A
⼦类⽗类
如果B是A
A是B的⽗类
B是A的⼦类
A派⽣B
B继承与A
继承语法代码:类B中将继承A中的所有公共成员
当运⾏⼦类构造函数时,会先运⾏⽗类构造函数
Super 关键词
表⽰⽗类
Super():调⽤⽗类构造函数
使⽤super可以使⽤⽗类⽅法继承的特性单根性:⼀个类有且仅有⼀个⽗类
传递性:若A是B的⽗类,B是C的⽗类 可以认为A是C的⽗类
Object 对象变量名.属性名
//表达式的类型为属性类型
12对象变量名.⽅法(参数列表)1Class B extends A{}
1
2
Object: 是所有的类的⽗类HashCode:返回int,当前对象的内存地址计算出来的整数Equals(Object obj):返回boolean ⽐较当前对象和另⼀个对象是否相等 默认⽐较hashCode是否相等
java面向对象的特征有哪些方面
ToString:返回 String 将当前对象转换为字符串格式返回,默认的结果是 类型名全称@hashCode的16进制格式
重写
重写(override)⼦类可以重写实现⽗类的公共⽅法多态
多态:将⼦类对象看作⽗类类型,⼀个⼦类对象可以赋值给⽗类类型的变量
在使⽤⼀个变量时,只需要关系其声明类型,不需要关⼼真实类型
例如: A是B的⽗类 代码:
a的声明类型 A a的实际类型 B
当调⽤⼀个对象的⽅法的时,运⾏的是真实类型的⽅法转型
向上转型原则 ⼦类对象赋值给⽗类类型 ⾥⽒替换原则:向上⾃动转型
向下转型,⽗类对象赋值给⼦类对象,必须强制转换
instanceof
instanceof关键字 ⽤于语法判断
语法:
读作 是不是 类型 返回值boolean
抽象
Abstract 关键字⽤于修饰类,表⽰该类是抽象类,不允许创建该类的对象
⽤于修饰⽅法,表⽰该⽅法是抽象⽅法,
1. 抽象⽅法⽆⽅法体,⼦类必须实现抽象⽅法
2. 抽象⽅法必须放置在抽象类中,抽象⽅法不能是private。
作⽤:⽗类中有⼀个⽅法,⽗类必须要写,但是不知道如何实现,⼦类必须重写该⽅法
Final 关键字A a = new B();
1对象 instanceof 类型
1
⽤于修饰变量或者属性时,表⽰常量,不可以更改⽤于修饰⽅法时,表⽰该⽅法不能被重写
⽤于修饰类时,表⽰该类不能被继承
接⼝
接⼝:是对⾏为的抽象
抽象类:对类型的抽象
定义语法:代码:⼀个类可以实现任意多个接⼝,实现⼀个接⼝就必须实现接⼝中的所有⽅法接⼝在使⽤上,可以当作⽗类,仍然满⾜多态原则
接⼝是不能创建对象的
静态
static 关键字:
Static:静态的,可以⽤于修饰属性或者⽅法(类成员),其修饰的成员成为静态成员,不⽤该关键字修饰的成员,成为实例成员。访问
静态成员的访问:类名.成员名
实例成员的访问:对象.成员名
场景
使⽤静态成员的场景:
* 某些属性希望被所有对象共享,该属性应被设置为静态
* 某个类没有属性全是⽅法,并且⽆继承关系,建议将⽅法设置为静态属性初始化的顺序:第⼀次使⽤该类型时,初始化其所有的静态属性创建对象,运⾏构造函数之前,初始化其实例属性
创建⼀个对象时完整的执⾏顺序
初始化静态属性(⼀次)->执⾏静态初始化块(⼀次)->执⾏实例初始化块->构造函数
调⽤
在⼀个类中,若调⽤⾃⾝的静态成员,可以省略类名
直接调⽤⾃⾝成员时,
1.静态⽅法中不能使⽤实例成员
2.实例⽅法中可以使⽤静态成员
初始化块
静态初始化块
代码:访问修饰符 interface 接⼝名{任意多个抽象⽅法
}
1
2
3
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论