java面向对象——类与对象

1. 类的定义

类是某一批对象的抽象,可以把抽象理解成某种概念。

类名需要每个单词的首字母大写

类的定义包含:构造方法(构造器)、成员变量、成员方法。类里个成员之间的定义顺序没有任何影响,各成员之间可以相互调用,但static修饰的成员不能访问没有static修饰的成员。

[修饰符] class 类名称{ 			//修饰符:private、protected、public、final、abstract
	零到多个构造器定义。。。
	零到多个成员变量。。。
	零到多个方法。。。
}
2. 对象的定义

创建对象的根本途径是构造方法(构造器),对象只有在实例化之后才能被使用,通过new关键字来调用某个类的构造器即可创建这个类的实例。当new一个对象时就会在内存空间中的堆区申请一片区域,用于存放于该对象有关的成员变量信息,这个过程叫做对象的创建/对象的构造/类的实例化。

【static】修饰的方法和属性,既可以通过类来调用,也可以通过实例来调用;没有使用static修饰的普通方法和属性,则只可通过实例来调用。

对象的定义在主方法中	类名 对象名 = new 类名();

Person p;			    //先定义一个Person类的引用(p的含义等于指针)
p = new Person【();		//用new关键字调用Person类的构造器,创建一个Person对象。
					   //后将创建的Person对象的地址给P。
					   
p.name = "liubin";		//调用p的name属性,直接为该属性赋值
p.say("java语言很简单,学习很容易");	//调用p的say方法,声明say方法时定义了一个形参。
3. 对象、引用和指针

Person p = new Person(); //创建了一个Person对象,一个p变量

类也是一种引用数据类型,因此person类型的引用变量p里存放的仅仅是一个引用,指向实际的person对象。

p被存放在栈内存中,用于记录【实例变量】在堆区中的内存地址信息。而真正的person对象属性数据则存放在堆内存中。以后使用该变量就可以代表记录的对象。

注意:

  1. 引用型的变量与C语言里的指针很像,他们都是存储一个地址值,通过这个地址来引用到实际对象,实际上,java里的引用就是C的指针,只是java语言把这个指针封装起来,避免开发者进行繁琐的指针操作。
  2. 当一个对象被创建成功之后,这个对象将保存在堆内存中,java程序不允许直接访问堆内存中的对象,只能通过该对象的引用操作该对象,也就是说,不管是数组,还是对象,都只能通过引用来访问他们。
  3. 堆内存里的对象可以有多个引用,即多个引用变量指向同一个对象。
  4. 如果堆内存中的对象没有任何变量指向该对象,那么程序将无法再访问该对象,这个对象也就变成了垃圾,java的垃圾回收机制将回收该对象,释放该对象所占的内存区。
    因此,如果希望通知垃圾回收机制回收某个对象,只需切断该对象的所有引用变量和它之间的关系即可。也就是把这些引用变量赋值为null。
4. 对象的this引用

this关键字总是指向调用该方法的对象,根据this出现位置的不同,this作为对象的默认引用有两种情形。

构造器中引用该构造器正在初始化的对象。

在方法中引用调用该方法的对象。

【static】:如果在static修饰的方法中使用this关键字,则这个关键字就无法指向合适的对象。所以static修饰的方法中不能使用this引用。

public Person grow(){
  	age++;
  	return this;
}
public static void main(String[] args){
  	Person p = new Person();
	p.show().show().show();				//即连续调用了三次grow()方法
}
5. 对象创建的过程

一、单个对象创建的过程

  1. main()方法是程序的入口,当创建对象时没有指定成员变量的初始值,则采用默认的初始化方式,当指定初始值时,则采用指定的数值进行初始化。

  2. 执行构造块可以修改成员变量的数值。

  3. 执行构造方法体可以再次更改成员变量的数值。

  4. 此时对象创建完毕,继续执行后续的代码。

二、子类对象创建的过程

  1. 首先加载父类的字节码文件,执行父类的静态语句块。
  2. 再加载子类的字节码文件,执行子类的静态语句块。
  3. 当创建子类对象时,需先构造子类对象中包含的父类对象,则执行父类的构造块和父类的构造方法体。
  4. 执行子类的构造块和子类的构造方法体。
  5. 此时子类对象构造完毕,继续执行后续的代码。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值