面向对象
**1.类与对象
2.内存分析
3.面向对象经典案例
4.构造器
5.this关键字
6.成员方法使用与应用
7.static关键字**
类与对象
面向对象与面向过程
面向过程和面向对象都是对软件分析、设计和开发的一种思想,它指导着人们以不同的方式去分析、设计和开发软
件。早期先有面向过程思想,随着软件规模的扩大,问题复杂性的提高,面向过程的弊端越来越明显的显示出来,
出现了面向对象思想并成为目前主流的方式。两者都贯穿于软件分析、设计和开发各个阶段,对应面向对象就分别
称为面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程(OOP)。C语言是一种典型的面向过程语
言,Java是一种典型的面向对象语言
类与对象的概念
对象:是具体的事物 xiaoming xiaohong
类:是对对象的抽象(抽象 抽出象的部分)Person 先有具体的对象,然后抽象各个对象之间象的部分,归纳出类通过类再认识其他对象。
自定义类与对象
自定义类
定义类(类的组成)
属性 field
方法 method
构造方法 construtor
其他:代码块 静态代码块 内部类
属性(field 成员变量)
属性用于定义该类或该类对象包含的数据或者说静态特征。属性作用范围是整个类体。
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。
成员变量与局部变量的区别
1.声明位置不同 类中 方法中
2.作用范围不同: 当前类的方法 当前方法
3.不同的方法中即使有同名的局部变量,没有关系,互不影响,建议相同
4.内存存放的位置的:栈内存中 堆内存中
5.成员变量有默认值;局部变量没有默认值
类与类之间的关系
类之间大体分为6种关系:
在设计模式中类与类之间的关系主要有6种:依赖、关联、聚合、组合、继承,实现, 它们之间的耦合度依次增加。
继承关系(Inheritance)
依赖关系(Dependency)
关联关系(Association)
聚合关系(Aggregation)
组合关系(Composition)
内存分析
内存划分 :
栈: • 存放:局部变量 • 先进后出,自下而上存储 • 方法执行完毕,自动释放空间
堆: • 存放new出来的对象 •
需要垃圾回收器来回收
方法区: • 存放:类的信息(代码)、 static变量、字符串常量等.
构造方法(构造器 constructor)
构造器也叫构造方法(constructor),用于对象的初始化。构造器是一个创建对象时被自动调用的特殊方法,目的是
对象的初始化。构造器的名称应与类的名称一致。Java通过new关键字来调用构造器,从而返回该类的实例,是一
种特殊的方法
构造器4个要点:
构造器的方法名必须和类名一致!
构造器虽然有返回值,但是不能定义返回类型(返回值的类型肯定是本类),不能在构造器里调用return。
通过new关键字调用!!
如果我们没有定义构造器,则系统会自动定义一个无参的构造方法。如果已定义则编译器不会添加无参数构
造方法!
与普通方法一样,构造方法也可以重载
修饰符 final abstract static不能用来修饰构造器
空构造
没有参数构造器叫做无参构造
1.一个类中,如果没有显式|手动 加入 任意构造器 javac 编译后 自动加入空构造
2.一旦加入构造器 ,javac 不会加入空构造器。
重载
一个类中可以存在多个构造器
1.方法重载: 两同三不同 同一个类方法名相同,形参类型 个数 顺序不同
2.构造器重载: 只看形参即可 形参类型 个数 顺序不同。调用时按“就近最优原则”
this关键字
this 即”自己”,代表对象本身,谁调用代表谁。在成员方法中或构造器中隐式的传递。作用如下:
1.this.属性避免属性和形参、局部变量同名,发生就近原则
2.this([实参列表]): 构造器的首行调用其他构造器。
static关键字
凡是静态的都是属于类的,与对象无关的,先于对象存在的。可用于修饰属性、方法、块。
在类中,用static声明的成员变量为静态成员变量 ,或者叫做: 类属性,类变量.
它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化,
对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!
可以使用”对象.类属性”来调用。不过,一般都是用“类名.类属性”
static变量置于方法区中!
用static声明的方法为静态方法
不需要对象,就可以调用(类名.方法名)
在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可直接访问非static的成员。但是可以通
过对象使用。
静态方法不能以任何方式引用this和super关键字
注意:
静态内容中只能直接使用静态内容,通过对象使用成员内容
成员内容中可以直接使用静态内容,可以直接使用成员内容,也可以通过对象使用