面向对象(一)

本文深入探讨Java中的构造器概念,包括其作用、默认构造器的行为以及与this和static关键字的关系。同时,解析了成员变量与局部变量的区别,以及类型强转与instanceof运算符的正确使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 构造器:
构造器是一个类创建对象的根本途径,如果一个类没有构造器,则不能通过 New关键字去创建对象,Java系统为每一个类提供了一个默认的构造器,构造器用于对类的实例进行初始化的操作。默认构造器是无参的,如果开发者在类中手动定义了构造器,则默认构造器失效,不能再次被调用。

构造器是有返回值的,当使用new关键字调用构造器生成一个对象的时候,构造器返回该类的实例,构造器的返回值是隐式的,不用专门去定义构造器的返回类型。

2. static 关键字:

首先需要明确的是, static 关键字属于类本身,不属于对象,不属于该类的单个实例,调用的时候只能通过类去调用。

没有使用 static修饰的只能通过对象来调用,属于该类的单个实例,不属于该类。

用static关键字的本质就是用来标识是属于类本身还是属于该类的实例对象,如果属于类本身(即用static修饰),则不管new多少个实例,都只有一个static成员,操作的也只是这一个成员。

 

3. this 关键字:

this关键字代表调用该方法的对象,注意,是一个对象,this的出现都代表的是对象,即某一个类的实例。

this根据调用位置的不同,分为以下两种:

(1)在构造器中引用该构造器正在初始化的对象

(2)在方法中引用调用该方法的对象

this的作用是让类中的一个方法,访问该类中的另一个方法或者实例变量。当this出现时,它所代表的的类是确定的,就是它当前所在的类,但是它所代表的对象是不确定的,只有当该方法被调用(被实例化),this所代表的对象才被真正确定下来。

4. static不能和 this 一起使用?

this在使用的时候,必须有对象,也就是说必须先创建对象,this关键字才有意义

而static关键字是属于该类的,可以使用类来直接调用方法,如果在static修饰的方法中用this关键字,则this关键字无法指向合适的对象,所以两个关键字不能一起使用。

这也是为什么 static 方法不能调用 非 static 方法的原因:

非static方法是属于对象的,不属于类,调用的时候只能通过对象去调用,必须有合适的对象,而static方法是属于类的,在static方法中调用非static方法,非static方法无法找到合适的对象,所以不能用。

5. 变量分为 成员变量 和 局部变量

成员变量指的是在类中定义的变量,局部变量指的是在方法中定义的变量。

成员变量包括 实例变量和类变量,类变量指的是用 static 修饰的变量,实例变量指的是非 static 修饰的变量。不用显示初始化,系统默认初始化。

局部变量包括形参,方法局部变量和代码块局部变量,必须显示初始化,否则不可访问。

局部变量保存在栈内存中,和堆没有关系,不用进行垃圾回收。

局部变量的范围越小,对性能的消耗就越小,能用代码块局部变量是最好的处理方式。

 

6. Person()   p   =   new Person()

p是引用,在栈中保存, Person是对象,在堆中保存,垃圾回收机制主要是回收堆中的对象。

 

7. 关于类型强转和 instanceof 运算符:

进行强制类型转换的时候,有可能会出现异常,无法强制转换,于是为了代码更加健壮,在强转之前,用 instanceof 运算符进行判断。

eg:

if(objPri instanceof String) {

String str = (String)objPri;

}

待更。。。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值