1 break ,continue ,return 的区别及作用?
答:
breal:跳出当前循环
continue:结束当前循环进行下一次循环
return:结束方法
2 抽象方法能被final修饰吗?
答:
不能,抽象方法的本意就是为了被继承,而被final修饰的方法不能继承,互相矛盾,所以抽象方法不能被final修饰.
3 static修饰的方法能调用非static修饰的变量和方法吗?
答:
不能,因为静态方法创建出来的时候,非静态资源还没有被创建出来,所以静态方法只能调用静态方法和变量,static修饰的方法只能调用静态方法和变量
4 局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final?
答:
因为生命周期不一致,局部变量保存在栈中,方法结束后,非final修饰的变量会被销毁,而局部内部类对局部变量的引用仍然存在,调用局部变量的时候就会出错
5 重载(Overload)和重写(Override)的区别
答:
重载:
在同一个类中,方法名相同,参数列表不同,构成的方法重载,参数列表不同分为:参数个数,参数类型,参数顺序
方法名称相同 参数类型不同 参数类型:参数数量 参数类型 参数顺序
---------------------------------------------------------------------------------------------------------------------------------
重写:
在继承的条件下,方法名参数必须相同的情况下,构成了方法的重写@Override注解来规范方法重写,如果不是重写方法,会报错
发生在父子类中,方法名称参数必须相同,抛出的异常小于父类访问修饰符大于等于父类
6 构造器(constructor)是否可被重写(override)
答:
构造器不能被继承,所以不能被重写,但是可以重载
7 java中创建对象的方式有哪些?
答:
1.使用关键字:new
2.使用Class类的newInstance方法
3.使用Constructor类的newIstance方法
4.使用clone方法
5.使用反序列化
多态
多态实现原理
多态的底层实现是动态绑定,就是在运行时把方法调用与方法实现关联起来.
静态绑定与动态绑定
一种是在编译器确定,被成为静态分派,例如:方法的重载;
一种是在运行时确定,被称为动态分派.例如:方法的重写和接口的实现
多态(通过继承多个子类对同一个方法进行重写,也可以通过接口实现接口并覆盖接口)的实现
虚拟机栈中会存放当前方法调用的栈帧(局部变量表,操作栈,动态连接,返回地址).多态的实现过程,就是方法调用动态分派的过程,如果子类覆盖了父类的方法,则在多态调用中,动态绑定过程会首先确定实际类型是子类,从而先搜索到子类中的方法.这个过程便是方法覆盖的本质.
static和final关键字
static:可以修饰属性和方法
修饰属性时,类级别属性,所有对象共享一份,随着类的加载而加载(只加载一次),县域对象的创建;可以使用类名直接调用.
修饰方法时,随着类的加载而加载,可以使用类名直接调用;静态方法中,智能调用静态的成员,不可使用this;