1、抽象类(abstract class)和接口(interface)有什么区别?
相同点:
(1)都不能被实例化。
(2)接口的实现类或者抽象类的子类都必须实现了接口或抽象类中的方法后才可以被实例化。
不同点:
(1)抽象类可以包括非抽象的方法,而接口中的方法必须是抽象的。
(23)继承抽象类在Java语言体系中体现一种继承关系,在合理的继承关系中,父类和派生类比如按存在is-a关系。而实现接口则体现一种has-a关系,实现者仅仅是实现了interface定义的契约而已。
(3)抽象类中可以有成员变量,而接口中不能有成员变量。
(41)抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的属性可以是任意的,而接口中的静态变量默认必须是public static final。
(5)接口中的抽象方法默认且必须是public的,而抽象类中的抽象方法可以是public、protect或默认。
(6)抽象类中可以有构造方法,但是不能实例化。
(7)抽象类中可以有静态方法(非抽象的),而接口中不能有静态方法。
(8)抽象类中的抽象方法不能用static、synchronized和native连用。? ? ? ??
2、成员变量和局部变量的区别?
(1)在类中的位置不同。
成员变量:类中,方法外。
局部变量:方法中。
(2)作用范围不一样。
成员变量:类中。
局部变量:方法中。
(3)初始化值的不同。
成员变量:有默认值。
局部变量:没有默认值。必须先定义,赋值,最后使用。
(4)关于权限修饰符的不同。
成员变量:可以使用权限修饰符。
局部变量:不可以使用权限修饰符。
(5)在内存中加载的位置。
成员变量:加载到堆空间中(非static)。
局部变量:加载到栈空间。
3、类和对象的关系
类和对象是两种以计算机为载体的计算机语言的合称。
对象是对客观事物的抽象,类是对对象的抽象。
类是一种抽象的数据类型。
它们的关系是,对象是类的实例,类是对象的模板。
4、final关键字的特点
(1)被final修饰的类不能被继承。
(2)被final修饰的变量称为常量,值不能修改。
(3)被final修饰的方法不能重写,使用static final修饰的变量称为静态常量,必须声明同时初始化,同时具备static和final的所有特点。
5、方法重载和方法重写的区别。
(1)重载是在同一个类当中,重写是在父子类当中。
(2)重载的参数列表不同,重写参数列表相同。
(3)重载和返回值无关,重写的返回值相同或者是父类方法返回值的子类。
(4)重载可以使用任意访问修饰符,重写访问修饰符大于等于父类方法修饰符。
(5)重载可以抛出不同异常,重写异常小于等于父类方法异常。
6、this和super的区别
(1)属性访问。
this:访问本类中的属性,如果本类没有此属性则从父类中继续查找。
super:访问父类中的属性。
(2)方法。
this:访问本类中的方法,如果本类中没有此方法,则从父类中继续查找。
super:直接访问父类中的方法。
(3)调用构造。
this:调用本类构造,必须放在构造方法的首行。
super:调用父类构造,必须放在子类构造方法的首行。
(4)特殊。
this:表示当前对象。
super:无此概念。
7、多态
(1)什么是多态?
对象的多种形态。
(2)多态的前提?
有继承/实现关系、有父类引用指向子类对象、有方法的重写。
(3)多态的好处?
使用父类型作为参数,可以接收所有子类对象,体现多条的扩展性与便利。
8、static关键字
static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量。
1.被static修饰的成员变量,叫做静态变量
特点:
(1)被该类所有对象共享
(2)不属于对象,属于类。
(3)随着类的加载而加载,优先于对象存在。
调用方式:
(1)类名调用(推荐)
(2)对象名调用
2.被static修饰的成员方法,叫做静态方法
特点:
(1)多用在测试类和工具类中
(2)Javabean类中很少用
调用方式:
(1)类名调用(推荐)
(2)对象名调用