重载和覆盖有什么区别

重载和覆盖是Java多态性的不同表现方式,Java中重载和覆盖有以下几个方面
1. 覆盖是子类和父类之间的关系,是垂直关系,重载是同一个类中方法的之间的关系,是水平关系。
2. 覆盖只能由一个方法或者只能由一堆方法产生关系,重载是多个方法之间的关系。
3. 覆盖要求参数列表相同,重载要求参数列表不同。
4. 覆盖关系中,调用方法体是根据对象的类型来决定的,而重载关系是根据调用时候的实参表与形参表来选择方法体的。

抽象类与接口有什么异同

相同点

  1. 都不能被实例化。
  2. 接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能被实例化。

不同点

  1. 接口只有定义,其方法不能在接口中实现,只有实现接口的类才能实现接口中定义的方法,而抽象类可以有定义与实现,其方法可以在抽象类中被实现。
  2. 接口需要实现,但抽象类只能别继承,一个类可以实现多个接口,但一个类只能继承一个抽象类,因此使用接口可以间接的达到多重继承的目的。
  3. 接口强调特定功能的实现,其设计理念是has-a关系,而抽象类强调所属关系,其设计理念是is-a关系。

笔试题

  1. 下列说法中,正确的是
    A 声明抽象方法大括号可有可无。
    B 声明抽象方法不可以写出大括号
    C 抽象方法有方法体
    D abstract 可修饰属性,方法和类

变量命名有哪些规则

在Java语言中,变量名,函数名,数组名统称为标识符,Java语言规定标识符只能由字母,数字,下划线,和组成,并且标识符的第一个字符,必须要是字母,下划线或者,标识符也不能包括空白字符。

以下标识符是非法的
char char是一个数据类型,为关键字。
number of book 标识符中不能有空格。
3com 标识符不能以数字开头。
a * b *不能作为标识符的字符

笔试题

  1. 下列不属于Java标识符的是
    A _helloWorld
    B 3HelloWorld
    C $HelloWorld
    D HelloWorld3
    答案 B

笔试题

下列标识符不合法的有
A new
B $usdollars
C 1234
D car.taxi

答案: ACD

static 关键字有哪些作用

static关键字有以下两种作用。
1. 为某特定书籍类型或对象分配单一的存的空间,与创建对象的个数无关、
2. 实现某个方法或者属性与类,而不是对象关联起来,也就是说,在不创建对象的情况下,就可以通过类来直接调用方法或使用类的属性。
static主要有四种使用情况
1. static 成员变量
2. static成员方法
3. static代码块
4. static 内部类

volatuile 有什么作用

volatile 是一个类型修饰符,他是被设计用来修饰被不同线程访问和修改的变量,被volatile类型定义的变量,系统每次甬道的时候都会直接从对应的内存中提取,而不会利用缓存,使用其关键字修饰的变量,所有线程任何时候所看到的变量的值都是相同的。

微信公众号

Java面试基础第三篇插图