1.1面向对象思想
1.1.1面向对象思想
面向对象是相对于面向过程来讲的,指的是把 相关的数据和方法组织为一个整体 来看待
面向过程到面向对象,是程序员思想上 从执行者到指挥者的转变。
1.1.1三大思想
面向对象思想从概念上讲分为以下三种:
OOA
、
OOD
、
OOP
OOA
:面向对象分析(
Object Oriented Analysis
)
OOD
:面向对象设计(
Object Oriented Design
)
OOP
:面向对象程序(
Object Oriented Programming
1.1.1三大特征
封装性:所有的内容对外部不可见
继承性:将其他的功能继承下来继续发展
多态性:方法的重载本身就是一个多态性的体现
1.2类与对象
1.2.1两者关系
类表示一个共性的产物,综合的特征。
对象:个性的产物,个体的特征
类必须由对象使用,对象的操作都在类中定义
类:属性和方法
-
属性:特征(变量、能说话能学习)
-
方法:行为(吃饭睡觉)
1.2.2类的定义
类必须写在 .java 文件中,一个 .java 文件可以由N个类,但是只能存在一个 public 修饰的类,并且 .java 的名称必须与 public 修饰的类名完全一致
类:
class 类名
(Person){
//成员属性;
String name;
//成员方法;
//定义:
返回值类型 方法名称
(say)
(形式参数列表){
方法体
return 返回值
}
//引用:
对象名.方法名称
(实际参数列表)
}
对象:
类名 对象名 = new 类名();
Person p = new Person();
p.name = “张三”;
p.say();
1.3对象创建的内存细节
1.3.1栈(先进后出)
Java中的一个线程即为一个栈区
栈:存储标识符(对象的名称:值为 存储对象 的值 的堆 的地址)与基本类型的值:
栈内存:栈指针创建与释放空间时必须明确移动的大小与范围
1.3.2堆(存放类的对象)
所有的对象都是通过 new 关键字进行创建的
创建堆不必关注需要多少储存空间与内存占用时长,GC(垃圾回收):当没有对象的引用时自动回收堆
1.3.3实例:
名称指向的内容(类似指针)
Book b1 = new Book();
Book b2 = b1;//b1的值为b1的值:即存储的堆地址
1.4构造方法
1.4.1 回顾对象的创建
Person p = new Person();
在右侧new Person()的时候 就是在调用构造方法
1.4.2 特点
用于对象初始化
在创建对象时自动调用
所有的Java类中至少存在一个构造方法:无明确编译器自动构造无参无代码的构造方法
1.4.3 定义格式
与普通方法基本相同
,
区别在于
:
方法名称必须与类名相同, 没有返回值类型的声明
!
1.4.4注意
建议自定义无参构造方法,不要对编译器形成依赖,避免错误发生。
当类中有非常量成员变量时,建议提供两个版本的构造方法,一个是无参构造方法,一个是全属性做参数的构造方法。
1.5 方法的重载(根据传送的参数类型匹配合适的方法)
方法名称相同
参数列表长度或 参数类型或 参数顺序 不同
与返回值无关
1.6 构造方法重载(无参与全参)
1.7 匿名对象(没有对象名、引用名)
只能使用一次,无名即没有下一次引用的机会 使用完直接垃圾回收
new 类名().方法名();