A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Mr7952 中级黑马   /  2015-8-13 10:14  /  494 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.局部内部类访问局部变量,如果局部变量没有加final修饰,会出什么问题?
        会出现编译异常,如果局部内部类要访问局部变量,该变量必须被final修饰,原因:内部类的生命周期和方法中的局部变量是不一样的,内部类是也是一个类,是存储在堆中,也只有当对该类的引用消失时,内部类才会消亡。而方法的局部变量是存储在栈中的,当调用结束时就会退栈,即在内存中这个属性就消失了。也就是说,内部类的生命周期超过了方法中局部变量的生命周期,内部类可能会调用到已经消失的属性,因此内部类不能访问方法中的局部变量。
2. 继承和多态的优点
        继承:提高了代码的复用性;让类与类之间产生关系,是多态的前提
        多态:提高了代码的扩展性和可维护性
3.多态的弊端
        弊端:父类引用无法访问子类的特有方法
        解决方法:在子父类间进行类型转换
4. 什么时候使用匿名内部类?
        1、一个抽象类或者接口的抽象方法少于3个的时候
        2、一个方法的形参的数据类型是一个抽象类或者是接口的时候,可考虑使用匿名内部类
5. 抽象类中不能出现的关键字是?
final可以抽象类中的变量,static,private不能出现
static 修饰方法,通过抽象类类名调用方法,没有方法体,调用没意义
private修饰了方法,不能被子类重写
6. 接口和抽象类的区别
        主要从1、成员特点 2、关系特点 3、设计理念
        各自下来再背一背
7. 静态方法能访问非静态方法吗?为什么?
        不能访问。因为静态方法随着类的加载而加载,属于类本身,优先于对象存在,当静态方法去访问非静态方法时,静态方法访问了内存中还没存在的成员,所以不能访问
8. static修饰的变量与final修饰的变量的区别?
Static修饰的变量被该类下的所有对象所共享。
Final修饰的变量是个常量,其值不能被改变

3 个回复

倒序浏览
总结的不错,赞一个
回复 使用道具 举报
风华正茂 来自手机 中级黑马 2015-8-13 13:04:04
藤椅
楼主写得不错,赞一个
回复 使用道具 举报
  赞 赞 赞
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马