面向对象基础面试题

本文详细介绍了面向对象的基础面试题,包括静态变量与实例变量的区别、值传递与引用传递的概念、Java中构造函数的作用及重载,以及不通过构造函数创建对象的几种方式。通过实例解析,帮助读者深入理解面向对象编程的核心概念。

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

这里写图片描述
1、静态变量和实例变量的区别?
在语法定义上的区别:静态变量前要加static关键字,实例变量前则不加。
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。

public class VariantTest
{
                   publicstatic int staticVar = 0;
                   publicint instanceVar = 0;
                   publicVariantTest()
                   {
                            staticVar++;
                            instanceVar++;
                            System.out.println(“staticVar=”+ staticVar + ”,instanceVar=” + instanceVar);
                   }
}

备注:这个解答除了说清楚两者的区别外,最后还用一个具体的应用例子来说明两者的差异,体现了自己有很好的解说问题和设计案例的能力,思维敏捷,超过一般程序员,有写作能力!

2、什么是值传递和引用传递?
对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。
对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。

3、Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?
当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。
Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。
Java不支持像C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java不会创建默认的复制构造函数。

4、不通过构造函数也能创建对象吗?
答案:是。
解析:Java创建对象的几种方式如下:
(1)用new语句创建对象,这是最常见的创建对象的方法;
(2)运用反射手段,调用 java.lang.Class 或者 java.lang.reflect.Construtor 类的newInstance()实例方法;
(3)调用对象的clone()方法;
(4)运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法。
1和2都会明确地、显式地调用构造函数;3是在内存上对已有对象的影印,所以不会调用构造函数;4是从文件中还原类的对象,也不会调用构造函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值