类和对象总结(部分)
类和对象
一、类和对象概念
1.面向对象编程
- 一种编程风格
- 使用对象和对象之间的交互来设计系统
- 数据和相关的逻辑封装在一起
- 核心概念
- 类
- 对象(实例)
- 方法
- 消息
- 封装
- 继承
- 多态
2.类
- 对事物的抽象
- 属性
- 行为
3.对象
- 类的具体实例
- 类中的属性,有自己独立的取值(状态)
- 类中的行为是外部对自己进行操作的接口(方法)
4.类和对象的关系
- 类不是对象(是用来创建他们的模型)
- 类也称为模板,它提供了对象的基本框架
5.面向对象编程的基本过程
- 定义类
- 创建对象
- 对象和对象互相交互
- 方法的调用(发送消息)
6.创建类的通用格式
7.包
-
在java中,包主要有以下用途
- 包允许将类组合成较小的单元
- 有助于避免命名冲突
- 包允许在更广的范围内保护类、数据和方法
-
包可以是类、接口和子包的集合
-
包名的命名规范
-
通常都是用小写英文字母
-
一般为公司网址的反向排列,如
com.company.region.package
-
8.包的使用
- 创建包
- package mypackage;
- 访问包中的类
- mypackage.My_Class
- 导入包
- import java.util.*;
- 导入包中的类
- import java.util.Arrays;
- 导入常量
- import static java.lang.Math.PI;
二、类的定义、声明创建
1.类的成员
- 变量(属性)
- 静态变量
- 实列变量
- 方法(行为)
- 静态方法
- 实例方法
- 构造方法
2.实例成员
- 实例变量
- 反映对象的状态
- 每个实例拥有自己的copy
- 实例方法
- 反映每个对象的行为
- 方法内部可直接访问实例变量
- 方法内部可直接调用其他实例方法
- 可通过对象的引用调用对象的实例方法-消息传递
3.静态成员
- 静态变量(类变量)
- 类的所有实例共享一个拷贝
- 静态方法
- 与类本身相关的行为,与类的具体实例无关
- 方法内部可不能直接访问实例变量或实例方法
- 可通过对象的引用调用对象的实例方法
- 可通过类名调用类的静态方法
4.方法重载(Overloading)
- 规则
- 方法名相同
- 参数列表不同——参数的类型、个数
- 意义
- 对于含义相近的成员方法,使用相同的名字便于理解
- 方法被调用时,编译器根据参数的类型和数量来确定调用哪个重载方法
5.构造方法
-
用于创建对象的方法
new <构造方法名>(参数列表...)
-
语法规则
- 方法名与类名相同
- 声明中没有返回值类型
- 可以有参数列表
-
意义
-
在对象创建时设置其内部状态
-
保证对象创建完成后立即可用
不需要在使用对象之前设定内部状态
-
创建对象:Member m = new Member();
6.缺省构造方法和构造方法重载
- 如果类中不定义构造方法,编译器会自动为类添加一个默认的构造方法
- 不带任何参数
- public可见范围
- 一个类可以定义多个构造方法,通过参数列表不同实现重载
7.this关键字
-
this是指向当前对象的引用
static方法中可否使用this关键字?
-
用法
- 实例方法或构造方法使用this访问其他实例成员
- 构造方法重载,在一个构造方法中调用构造方法
- 必须位于构造方法的第一句
8.成员变量初始化
-
声明时初始化
public static int i=3;
private String name="BMW";
-
默认初始值
public static int i;
public String name;
-
构造函数中赋初值
-
静态代码块/非静态代码块(实例代码块)
三、对象的创建和使用
1.创建对象
Dog mydog = new Dog();
类名 声明一个引用变量 = 关键字new 调用构造方法;
2.对象的引用
mydog.bark()
对象名.方法名
3.对象引用的赋值
Dog fido=new Dog();
Dog hero=new Dog();
fido=hero;
4.对象作为参数
- 对象作为方法参数,在方法中只能改变该对象的状态,不能改变该对象的引用
- 实参传给形参的过程可理解为对象引用的赋值
5.创建对象数组
Dog[] pets = new Dog[7]
标记为Dog数组 声明一个Dog数组变量 = new 创建大小为7的Dog数组
6.对象数组的使用
pets[0]=new Dog();
pets[0].name="Fido";
pets[0].bark();
7.垃圾回收
BooK b=new Book();
Book c=new Book(); b=c
- 有引用指向对象时,对象不会被回收
- 对象变为可回收
- 引用永久性的离开它的范围
- 引用被赋值到其他对象上
- 直接将引用设定为null