Java基础精选解答题

  1. 1.抽象类和接口的区别 ,试举一例
    抽象类为父类,是class,用abstract修饰,定义了该类型事物的共性属性与行为,方法通常定义为抽象方法,子类继承父类
    如员工类可以定义为抽象父类,不同的员工厨师,服务员,经理均可以继承该父类。
    接口为规范,是interface,是功能的集合,定义了符合该规范的多个方法
    如飞行功能可以定义为接口,规定了起飞,飞行,降落方法,不同的类想要符合飞行规范只需要实现该接口,如飞机与小鸟都可以实现该接口

    相同点
    	都不可以创建对象
    不同点
    	抽象类是is a的关系,子父类为同种事物,接口是like a的关系,子父类不为同一种事物。
    	抽象类当中可以有构造方法,接口中没有
    	抽象类当中可以定义非抽象方法,1.9之前JDK版本接口中所有方法必须为抽象方法
    	抽象类中可以有成员属性,接口中只有静态常量
    	抽象类中没有固定修饰符,接口中方法有固定修饰符public abstract,常量有固定修饰符public static final
    	
    举例:动物类,鸟类,狗类,飞机类,飞行接口说明
    抽象类
    动物类可以定义成抽象类,因为动物类是抽象事物,
    鸟类与狗类可以定义为动物类子类,是动物的一种
    飞机类可以定义为一个单独类,不属于动物的子类
    
    飞行接口
    飞行功能如果定义在鸟类与飞机类中,则代码重复
    飞行功能如果定义在动物类中,则并不是所有动物都具备飞行方法
    所以飞行功能应该定义在飞行接口中,所有需要飞行功能规范的类只需要实现飞行接口即可。
    

2.常用的集合有哪些,谈谈对它们的理解
List集合
ArrayList,底层是数组结构的单列集合,增删慢,查找快,有序,有索引,元素可以重复
LinkedList集合,底层链表结构的单列集合,增删快,查找慢,有序,有索引,元素可以重复

	Set集合
		HashSet 集合,无序无索引无重复的单列集合
		
	Map集合
		HashMap集合,双列集合,存的是键值对,每一个键对应一个值,键不可重复,值可以重复,无序,无索引

3.final, finally, finalize 的区别
3.1:final是Java中的关键字,修饰符。
3.1.1:被final修饰的变量叫做常量,常量的值不能更改。常量名必须全部大写,多个字符之间用 _ 连接
3.1.2:被final修饰的方法不能被子类重写
3.1.3:被final修饰的类不能作为父类被继承
3.2:finally:Java中的一种异常处理机制,写在catch代码块下面
3.2.1:finally中的代码一定会执行,不管有没有异常发生
3.3:finalize是Java中Object类的一个方法
3.3.1:finalize是在垃圾收集器执行的时候(不定期执行)会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他 资源回收,例如关闭文件等。

4.Java 中有几种类型的流?分别是什么?
两种类型:
字节流、字符流
字节流分为:
字节输入流:InputStream(接口)
文件字节输入流:FileInputStream
对象字节输入流:ObjectInputStream
高效字节输入流:BufferedInputStream
字节输出流:OutputStream(接口)
文件字节输出流:FileOutputStream
对象字节输入流:ObjectOutputStream
高效字节输入流:BufferedOutputStream
字节打印流:PrintStream

字符流:
	字符输入流:Reader(接口)
		文件字符输入流:FileReader
			转换输入流:InputStreamReader
			高效字符输入流:BufferedReader

	字符输出流:Writer(接口)
			文件字符输出流:FileWriter
		转换输出流:OutputStreamWriter
			高效字符输出流:BufferedWriter
		字符打印流:PrintWriter

5.面向对象的四个基本特征

封装:对外隐藏实现细节,留出访问接口(如getter//setter方法)
特点:通过特定方法访问,提高代码复用性和安全性,方便修改和实现

继承:父类中定义给类事务的共有行为与属性,新的子类能继承已有类的所有成员变量和成员方法,也可以有自己的属性和方法
优点:提高代码复用性,父类方法可以用于子类

多态:同一事物表现出来的多种形态
存在的三个必要条件:
1,有继承的关系存在(实现接口也是一种继承)
2,有方法重写
3,有父类引用指向子类对象

  1. 异常处理的时候,finally代码块的重要性是什么?
    答:finally是java的一种异常处理机制。
    (1)finally结构使代码总会执行,不管有无异常发生。
    (2)使用finally可以维护对象的内部状态,并可以清理非内存资源

    抽象:规定一类事物该有的基本的功能和属性,但是没有具体怎么实现的概念
    抽象方法要用abstract关键字声明
    抽象类带有抽象方法,抽象方法可以只声明不需要方法体
    含抽象方法的类必须被声明为抽象类,抽象类的子类必须实现所有的抽象方法后,才能被实例化,否则这个子类还是抽象类。

  2. 代码中如何实现多态 ,试举一例
    答案:
    多态需要前提:有继承或实现关系
    多态的格式为:父类引用指向子类对象
    多态的使用场景有很多,如方法参数为父类或接口,调用方法时传入子类或实现类对象
    比如:
    创建一个抽象的Animal父类对象 父类对象中有public abstract void eat(Animal a );的方法 参数为Animal a
    创建一个子类Dog对象 继承父类 重写父类eat方法
    创建一个子类Cat对象 继承父类 重写父类eat方法
    创建一个测试类 创建父类引用指向子类对象如:( Animal a = new Dog(“小狗”);
    调用方法 a.eat(a);
    因为不同子类用不同方式重写了eat方法。所以传入不同子类对象虽然运行的均为eat方法,但运行结果不同。

  3. 说说你对于static关键字的理解 (概念:属于类,优先于对象,使用:类名.的方式,注意事项:静态方法不可以直接调用非静态成员 )
    如果一个类中有抽象方法,那么这个一定是抽象类?抽象类必须要有抽象方法吗

     static是静态修饰符,可以修饰成员
     被static修饰的成员属于类而不属于对象
     static修饰内容随着类的存在而存在 优先对象
     static修饰的内容可以使用类名.的方式访问,无需创建对象
     静态方法不可以直接调用非静态成员
     
     一个类中有抽象方法那么就一定是抽象类,抽象类不一样要有抽象方法
    
  4. Java中的访问权限有哪些 ,分别权限范围是什么?
    public公共 protected受保护 包权限(无) private私有
    同类中 √ √ √ √
    同包 √ √ √
    不同包子类 √ √
    不同包 √

10.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可以继承实体类
接口可以继承接口,并且可以多继承接口。
抽象类可以实现接口,并且可以多实现接口。
抽象类可以继承实体类,并且只能单继承。

猜你喜欢

转载自blog.csdn.net/qq_43419627/article/details/85342664
今日推荐