java面向对象总结

1.构造方法的特点

>方法名与类名相同

>无返回值类型

>可以指定参数

>构造方法不被继承

2.抽象类和抽象方法的特点

>抽象类和抽象方法都通过abstract关键字来修饰

>一个抽象类里可以没有抽象方法,但含有抽象方法的类必定为抽象类

>抽象类不能被实例化为对象,而只能作为其他类的超类,并且必须被继承

>抽象类中可以没有,有一个或多个抽象方法,甚至全部方法都可以是抽象方法

>抽象方法只有方法声明,不能有方法体

3.方法重载和方法重写是什么,有什么区别

方法的重载

     >必须在一个类中

     >方法名相同

     >参数列表不同

     >与方法返回值和方法修饰符没有任何关系

方法的重写

    >方法名相同

    >参数列表相同

    >返回值类型相同或者是其子类

    >访问权限不能严于父类

4.使用继承有什么特点?继承的优点是什么?

特点

>只支持单继承,即一个子类只允许有一个父类

>子类可以拥有父类的属性和方法

>子类可以拥有自己的属性和方法

>子类可以重写覆盖父类的方法

>可以声明父类,创建子类(又称父类装载子类)

优点

>代码量减少

>有利于代码的优化

>提高程序的可维护性

5.多态的特点?有什么优点?

特点

>必须有继承关系

>必须有方法覆盖

>必须有父类引用指向子类对象

优点

>可替换性

多态对已经存在的代码具有可替代性。图形类可以对应圆类,对其他任何圆形几何体,如圆环,也同样工作。

>可扩充性

多态对代码增加可扩充性。增加新的子类不影响已经存在类的多态性、继承性,以及其他特性的运行。

>接口性

多态是超类通过方法签名,向子类提供一个公共的接口,由子类来完善或者覆盖她而实现。

>维护性

有利于后期代码的维护。

6.多态的实现方式是什么?

>使用父类作为方法形参实现多态

>使用父类作为方法返回值实现多态

7.如何编写接口?

>修饰符

可选,用于指定接口的访问权限,可选值为public。即使省略,也依然是public

>接口名

必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写

>extends

父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends关键字时,父接口名为必选参数。父接口可以存在多个,用逗号隔开。

>方法

接口中的方法只有定义而没有被实现。

8.接口的作用是什么?

接口是设计层面的概念,往往由设计师设计,将定义与现实分离

接口是一种约定   体现在接口名称和注释上,有些接口只有名称     方法的实现方式要通过注释来约定

9.接口和抽象类有什么异同?

都不能直接使用

1.抽象类中可以有属性 方法(抽象方法 普通方法)
接口都是抽象方法 实现=静态常量
public void int();
2.使用
抽象类必须继承 extends
接口 必须实现 implements
类是单继承 接口是多实现

10.什么是异常,你是如何理解的?

代码可能在编译时没有错误,可是运行时会出现异常

程序出现不正常情况后,程序将会跳出当前环境,并且抛出异常。

11.如何处理异常,异常的关键字是什么?

捕获异常   try  执行可能产生异常的代码

                 catch  捕获异常

                 finally  无论是否发生异常,代码总能执行

声明异常   throws  声明方法可能要抛出的各种异常

抛出异常   throw  手动抛出异常

关键字:try、catch、finally、throw、throws

12.常见的异常种类有哪些?

Exception          异常层次结构的父类

ArithmeticException          算数错误情形,如以零作除数

ArrayIndexOutOfBoundsException       数组下标越界

NullPointerException       尝试访问 null 对象成员

ClassNotFoundException      不能加载所需的类

IllegalArgumentException     方法接收到非法参数

ClassCastException       对象强制类型转换出错   

NumberFormatException      数字格式转换异常,如把“abc”转换成数字

13.如何使用log4j记录日志?

第一步:在项目中加入log4j所使用的jar文件

第二步:创建log4j.properties文件

第三步:编写log4j.properties文件,配置日志信息。 

1>下载log4j的JAR包

2>复制当前项目录下

3>点击右键:add as library

4>配置:新建一个文件夹:log4j.properties

a:日志的输出级别:fatal>error>warn>info>debug

b:控制台

c:文件:log4j,appender.loglife.File=aa.log

5.新建测试类             

14.常见的集合有哪些?

Collection   List   Set    Map

ArrayList  LinkedList  HashSet  TreeSet  HashMap TreeMap

15.list,set,map各有什么异同?

List接口储存一组不唯一,有序(插入顺序)的对象
Set接口存储一组唯一,无序的对象
Map接口存储一组键值对象,提供key到value的映射

16.和数组类型采用相同结构的是哪个集合?

java.util.ArrayList和java.util.Vector.都是采用数组形式来实现的

17.什么是foreach循环?
此循环用于遍历数组。对于循环中的每个计数器,都会分配一个数组元素,并将下一个计数器移动到下一个元素。

18.线程与进程的区别?

定义

进程:是执行中一段程序,即一旦程序被载入到内存中并准备执行,它就是一个进程。进程是表示资源分配的的基本概念,又是调度运行的基本单位,是系统中的并发执行的单位。

线程:单个进程中执行中每个任务就是一个线程。线程是进程中执行运算的最小单位。

>一个线程只能属于一个进程,但是一个进程可以拥有多个线程。多线程处理就是允许一个进程中在同一时刻执行多个任务。

>线程是一种轻量级的进程,与进程相比,线程给操作系统带来侧创建、维护、和管理的负担要轻,意味着线程的代价或开销比较小。

>线程没有地址空间,线程包含在进程的地址空间中

19.实现线程有哪几种方法?

实现Runnable接口,并实现该接口的run()方法

继承Thread类,重写run()方法

实现Callable接口,重写call()方法

使用ExecutorService、Callable、Future实现有返回结果的多线程

20.线程的生命周期是什么?

创建状态   就绪状态  运行状态   阻塞状态  死亡状态 

21.简单解释一下线程休眠,线程强制执行,行程礼让。以及他们的实现方法

>线程休眠

让线程暂时睡眠指定时长,线程进入阻塞状态

睡眠时间过后线程会再进入可运行状态

调用sleep()方法需处理InterruptedException异常

>线程的强制运行

    使当前线程暂停执行,等待其他线程结束后再继续执行本线程

需处理InterruptedException异常

>线程的礼让

暂停当前线程,允许其他具有相同优先级的线程获得运行机会

该线程处于就绪状态,不转为阻塞状态

public static void yield()

只是提供一种可能,但是不能保证一定会实现礼让。

22.什么情况下需要线程同步?

Java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时,将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,从而保证了该变量的唯一性和准确性。

23.什么是流?流的常见种类有哪些?使用流的过程中需要注意哪些问题?

Java中的流是个抽象的概念,当程序需要从某个数据zd源读入数据的时候,就会开启一个数据流,数据源可以是文件、内存或网络等等。相反地,需要写出数据到某个数据源目的地的时候,也会开启一个数据流,这个数据源目的地也可以是文件、内存或网络等等

输入流   输出流   字节流   字符流

关于流的使用,得关闭,不然会溢出

 

原文地址:https://www.cnblogs.com/yaoyao9/p/12926130.html