Java面向对象的一些概念和原理

Java面向对象的一些概念和原理

1.1 什么是类。

参考答案:

类是一个概念(名词)抽象的定义。

类定义了该类型对象的数据结构,称之为“成员变量”,同时,也定义了一些可以被调用的功能,称之为“方法”。

类是用于构建对象的模板,对象的实质就是内存中一块存储区域,其数据结构由定义它的类来决定。

1.2 请简述JVM内存结构堆,栈和方法区分别存储的内容。

参考答案:

JVM会在其内存空间中开辟一个称为“堆”的存储空间,这部分空间用于存储使用new关键字创建的对象。

栈用于存放程序运行过程当中所有的局部变量。一个运行的Java程序从开始到结束会有多次方法的调用。JVM会为每一个方法的调用在栈中分配一个对应的空间,这个空间称为该方法的栈帧。一个栈帧对应一个正在调用中的方法,栈帧中存储了该方法的参数、局部变量等数据。当某一个方法调用完成后,其对应的栈帧将被清除。

方法区该空间用于存放类的信息。Java程序运行时,首先会通过类装载器载入类文件的字节码信息,经过解析后将其装入方法区。类的各种信息都在方法区保存。

1.3 什么是方法的重载(overload)。

参考答案:

在Java语言中,允许多个方法的名称相同,但参数列表不同,称之为方法的重载(overload)。

编译器在编译时会根据其参数的不同,绑定到不同的方法。

1.4 请说出你对null的理解。

答案:

引用类型变量用于存放对象的地址,可以给引用类型赋值为null,表示不指向任何对象。如下所示:

当某个引用类型变量为null时无法对对象实施访问(因为它没有指向任何对象)。此时,如果通过引用访问成员变量或调用方法,会产生NullPointerException 异常。

1.5 什么是构造方法。

参考答案:

在Java语言中可以通过构造方法实现对对象成员变量的初始化。构造方法是在类中定义的方法。但不同于其他的方法,构造方法的定义有如下两点规则:

1.构造方法的名称必须与类名同名。

2.构造方法没有返回值,但也不能写void。



 

2.1 什么是方法重写(Overwirte)。

参考答案:

子类可以重写(覆盖)继承自父类的方法,即方法名和参数列表与父类的方法相同;但方法的实现不同。

当子类对象的重写方法被调用时(无论是通过子类的引用调用还是通过父类的引用调用),运行的是子类的重写后的版本。

2.2 重写和重载的区别

参考答案:

重载遵循所谓“编译期绑定”,即在编译时根据参数变量的类型判断应该调用哪个方法。

重写遵循所谓“运行期绑定”,即在运行的时候根据引用变量指向的实际对象类型调用方法。

2.3 对比访问控制修饰符public ,protected,默认,private。

参考答案:如下表所示。

参考答案


 

3.1 关键字final可以修饰一个类,一个方法,一个变量,各起什么作用。

参考答案:

final修饰类是不能被继承

final修饰方法不能在子类中被覆盖

final修饰变量,称为常量,初始化以后不能改变值。

3.2 什么是对象数组。

参考答案:

所谓对象数组,是对象的元素不是基本类型,而是引用类型。

3.3 什么是抽象类。

参考答案:

用abstract关键字修饰的类称为抽象类。抽象类不能实例化,抽象类的意义在于“被继承”。抽象类为其子类“抽象”出了公共的部分,通常也定义了子类所必须具体实现的抽象方法。



 

4.1 abstract class和interface有什么区别。

参考答案:

1.从语法角度

abstract class方法中可以有自己的数据成员,也可以有非abstract的成员方法,并赋予方法的默认行为,而在interface方式中一般不定义成员数据变量,所有的方法都是abstract,方法不能拥有默认的行为

2. 从编程的角度

abstract class在java语言中表示的是一种继承关系,一个类只能使用一次继承关系。而一个类可以实现多个interface

3. 从问题域角度

abstract class在Java语言中体现了一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is a"关系,即父类和派生类在概念本质上应该是相同的。对于interface 来说则不然,并不要求interface的实现者和interface定义在概念本质上是一致的,仅仅是实现了interface定义的契约而已。

4.2 接口是否可继承接口? 抽象类是否可实现接口? 抽象类是否可继承实体类。

参考答案:

第一问:接口是可以继承接口的并且可以继承多个其它接口。

第二问:抽象类可以实现接口中的方法。

第三问:抽象类可以继承实体类。

4.3 nonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)。

参考答案:

匿名内部类是可以继承其它类,同样也可以去实现接口的,用法为:

这样的用法在swing编程中是经常使用的,就是因为它需要用到注册监听器机制,而该监听类如果只服务于一个组件,那么将该类设置成内部类/匿名类是最方便的。

4.4 什么是回调模式。

参考答案:

回调模式是指——如果一个方法的参数是接口类型,则在调用该方法时,需要创建并传递一个实现此接口类型的对象;而该方法在运行时会调用到参数对象中所实现的方法(接口中定义的)。



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值