Java 面向对象 理解题分享

Java 面向对象 理解题分享

1.判断题
1.一个类可以继承一个父类 也可以实现多个接口

√ 一个普通类只能有一个父类但能实现多个接口

2.String 对象不可变 ,StringBuffer对象是可变的

√ String 表示一组不可变的字符序列 ,对于字符串的操作 将会创建新的字符串对象,不适用于频繁操作字符串
StringBuffer 线程安全的可变字符序列,对于字符串的操作将在其对象方法中完成,不会创建新的字符串对象 适用于多线程操作

3.Map 中的值可以为null

√ Map的方法.put();将会返回一个value的旧值 第一次使用put添加对象时,返回的
value值为null

4.Map的put方法表示存入元素 ,返回值为boolean类型

× put方法的返回值为value的旧值

5.Collection 接口的子接口有: List Set Map

× Map 在集合中是父类接口
List Set是Collection的子接口
Vector是List的实现类

2.简答题

1.名词解释 try catch finally throw throws:

try 用来定义可能出现错误的代码块
catch 用来捕捉异常 处理异常
finally 无论是否出现异常 都必须执行的代码块。一般用来关闭连接 释放流
throw 写在 catch代码块中,表示抛出异常
throws 写在方法名后面 表示当前位置不处理异常 交给调用位置处理

2.Exception 与 error 的区别

**error表示系统级的错误和无法通过修改程序代码处理的异常 。主要有内存泄漏等 **
Exception表示需要捕捉或修改程序处理的异常 。如果程序正常执行 就不会产生异常 Exception 包括运行时异常和非运行时异常 (检查异常)
运行时异常 程序运行出现的异常 由java虚拟机捕捉 并抛出到控制台的异常
非运行时异常 Java编译器要求方法必须处理或抛出可能发生的非运行时异常

3.Override 与 Overload 的区别
Override 重写 : 实现类必须重新接口的方法 子类可重新父类方法 :方法名相同 参数列表相同 返回值相同 代码块不同的方法 重写可以放大访问修饰符 但不能缩小 访问修饰符大小关系 public > protected > default > private

Overload 重载 : 同一个类中 方法名相同 参数列表不同 与返回值无关的方法 叫做方法的重载

4.接口和抽象类的区别

方法: 接口中默认是抽象方法 抽象类中可以有抽象方法 也可以有非抽象方法
属性: 接口中默认是被static final 修饰的常量 抽象类可以有常量 也可有变量 接口常量只能被public default 修饰
对象: 抽象类可以被抽象类继承或本身继承别的抽象类,但不能继承普通类抽象类实现接口 。接口只能被实现 或继承接口和被别的接口继承。抽象类和接口都不能被实例化 但抽象类能多态化子类对象
本质: 抽象类是类 接口不是类

5.List 和 Set 的区别
1.都是Collection的子接口 。、
2.List的实现类:ArrayList LinkedList vector
3.Set 的实现类: HashSet,LinkedSet ,TreeSet
4.List存储的元素是有序的,可重复的。Set存储的元素是无序的,不可重复的
5.List和Set存储元素的类型都是引用数据类型
6.HastSet的内部存储时一个散列表 ,内部实现是一个HashMap ArrayList内部存储的原理是数组,默认构建容量为10,自动扩容
7.add(Object)方法:都有返回值 boolean,表示是否添加成功。Set中表示添加,无顺序。List中表示在最后一位追加,有顺序。
8.List可根据索引获取特定的值,Set不能获取特定的值。List有index,Set有HashCode。Set要重写HashCode()和equals()方法。

6.ArrayList与LinkList的区别

ArrayList 是数组列表集合 内部存储是数组 拥有下标 遍历速度快 但插入删除性能一般
LinkedList 是链表集合 内部存储时链表 遍历速度慢 但插入删除性能优越 有First Last 方法

7.String与StringBuffer的区别

String 是线程安全的不可变字符序列 其对字符串的操作会创建新的字符串对象不建议频繁使用
StringBuffer 是线程安全的可变字符序列 其对字符串的操作在方法内部完成,不会创建新的字符串对象 适用于多线程操作

8.this与super的区别

this表示当前对象,super表示父类对象。
This()表示当前对象构造方法,super()表示父类对象构造方法。
this()与super()只能存在一个,且必须写在第一行。
子类不能继承父类的构造方法,只能调用。子类默认调用父类的无参构造方法

9.final与finally的区别

finally用于try语法中,表示不论出不出现异常都必须执行的代码块,finally不是必须出现的。
final是修饰词,表示最终的,不可改变的。
Final修饰变量,表示常量。不能再次赋值,不能修改,常量名所有字母大写。 Final修饰方法,表示该方法不能被重写。final修饰类,表示该类不能被继承。final修饰对象,表示该对象不能再new实例。

10.名词解释:面向对象

10.面向对象:将现实生活中的事物封装成对象,通过对象的实例化和调用,完成需求。关注点是对象的属性和方法,忽略事物执行的顺序或过程。面向对象的特点有:抽象、封装、继承、多态。
抽象:抽象就是将现实生活中的事物,忽略与当前目标无关的方面,抽取出当前有用的属性和方法,使用类来表示。
封装:
①封装就是使用private隐藏类的内部属性,使用set方法(设置赋值条件)赋值,使用get方法在外部访问。
②将需要多次重复运行的代码,封装到一个方法中,通过调用方法运行代码。可减少代码的冗余,提高代码的重用性。
继承:用关键字 extends 建立的一个类与另一个类之间的关系,叫做继承。extends 之前的类叫派生类/子类。extends 之后的类叫基类/父类/超类。子类可继承父类的属性和方法,可调用父类的构造方法,可重写父类的方法。
多态:多态是指一种类型,多种形态。父类对象在编译期是父类形态,运行期是子类对象形态。提高了java系统的可插拔性。多态有向上转型和向下转型。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值