JAVA基础知识:类 对象 引用
一、概念
- 类的含义
>>类:class
所对某种类型对象定义变量和方法的原型,它表示对现实世界中一类具
有共同特征的使我的抽象,是面向对象的基础。
类是构建对象的模板或蓝图
类是对某种对象的定义,它包含有关对象动作方式的信息,包含他的名称 方法 属性和事件
- 类和对象的关系
对象:object 是一个实体,一件事,一个名词,可以获得的东西,可以是任何东西
对象是类的实例化。
由类构造对象的过程称为创建类的实例
在java中万物皆为对象。
一个java程序可以看作是一系列对象的创建和它们之间的信息通信的过程。
若把类看作蓝图,那么可以从这张蓝图中创建出任意多个对象。
从类创建的所有对象的都有相同的成员:属性 方法。
每个对象都象一个独立的实体,一样具有独立的行为。
系统为每个对象独立的内存空间。
- 封装
数据隐藏 从形式上看,就是把数据和行为放在一个包中,并对对象的使用
者隐藏了数据的实现方式。
- 对象的实例域:
对象中属性的数据,或者说属性值称为实例域或者属性
- 方法:
操作这些数据(属性值)的过程称为方法
- 状态:
对于每个特定的类实例(对象)都有一组特定的实例域值(属性值),这些值的集合就是这个对象的当前状态。
- 对象的3个主要特性
a.对象的行为
可以对对象施加那些动作,或者说施加那些方法
b.对象的状态
当施加方法后,对象所如何响应的?
c.对象标识
如何辨别具有相同行为与状态的不同对象
类的跟节点:object 这个神通广大的超类
类 对象 引用
- 类
- 对事物、概念、逻辑、算法抽象 抽象属性(成员变量,member varia ble)和行为(成员方法,membermethod).
- 理解为图纸
- 对象
- 理解为从图纸创建出来的实例,可以创建多个
- 每个对象都是独立的实体
- 每个对象占用的内存空间都是独立的
- 引用
- 理解为对对象的遥控器
- 保存对象的内存首地址,通过引用可以找到、控制、调用对象类
- 重载
- 同名 不同参数个数或者不同参数类型
调用时,根据参数类型决定执行哪个方法
println(“a bc”); pri ntln(3.14); pri ntln(newDate()) ;
可以以相同的方式处理不同类型的数据
- 使用对象
使用对象:
Step1 : 构造对象
new 类名();
Step2 : 初始化
new 类名(初始化值);
Step3 : 给对象设置一个引用
类名 引用变量的名 =new 类名(初始化值);
Step4:对对象施加方法
引用的变量名. 方法名();
构造方法
构造器的概念
构造新实例,他是个特殊的方法,用来构造并来初始化对象。
构造方法是在创建对象的时候对成员变量进行初始化
引用类对象的时候都会对类的成员变量进行一次初始化,无参的构造方法 编译器自动帮你添加,你也可以自己去写,里面的成员变量都会被执行初始化(赋值)。
构造器
- 如何没有系统会自动创建一个 默认是隐藏的
- 其名称和类名一致
- 构造器的参数可以有0 个 1个或者更多
- 构造器没有返回值
- 构造器怎是伴随着new操作一起使用
- 构造方法可以重载
- 多个构造方法的时候。调用相同的成员变量 避免代码重复 使用this
向下调用 从参数少的构造方法 调用参数多的构造方法。
This 关键字
- 在一个构造方法中,调用其他重载的构造方法的必须是构造方法的首行代码
- 一般从参数少的构造方法调用参数多的构造方法
例如:
public Test(String a) {
this(a, 0);
//调用另外一个构造方法的代码 :变量 赋值语句 向下调用的
//这个是调用Studen(Stri ng a,String b) 这个构造方法的2
//个参数赋值语句的,但是本构造方法就一个变量,另外一个给出一个默认值
}
public Test(String a, int i) {
this(a, i, 0);
//同理:调用下面3个变量的构造方法中的语句
}
public Test(String a, int i, int c) {
String name = a;
int sex = i;
int age = c;
}
用法:
- 方法内部:都有this 他表示对自己的调用 默认是省略掉的
- this 是对当前对象的引用
- 当前对象: 使用那个实例调用 那个就是当前的对象
- 用this 调用当前对象的属性 方法或者成员变量
- 在构造方法之间相互调用
//下面2个函数的效果是一样的 当有重复的变量的时候必须使用this
class DD {
int x;
public DD(int x) {
super();
this.x = x;
}
}
class DDd {
int x;
public DDd(int d) {
x = d;
}
}
- 创建对象实例
使用关键字:new
Perp =new Per(3);
- new Per() 是对象
- P :这个对象的变量 一个指向对象的引用 ,存放在: 在栈内存中 存放实例的引用地址
- 对象的初始数据是3 : 存放在堆内存中
引用类型变量特殊值
null :表示不引用任何对象 Scanner sc =null; // 在栈中 不保存任何地址信息 不指向堆中具体的数据(实例)
//不能被调用方法参数传递
基本类型传递
------方法得到的只是数据的拷贝,不能修改原本的值是纯粹的引用调用
引用类型传递
------对对象采用的不是引用调用,而是进行值传递
总结:
- 一个方法不能修改一个基本数据类型的参数(即数值型和布尔型)
- 一个方法可以改变一个对象参数的状态
- 一个方法不能实现让对象参数引用一个新的对象
习题
第一题:
写一个类Address
属性:城市 街道 邮编
构造方法:添加多个构造方法,允许以不同的方式创建Address
第二题
写一个类 Person
属性:姓名、性别、年龄、地址(Ad dress类型)
构造方法:添加多个构造方法,
允许以不同的方式创建Person