接口和类的一些常见问题

  1. static 修饰的属性,相较于实例变量,特别之处有:

    加载区别:如果一个被static 修饰的内部类需要使用的话是不需要实例化对象,而实例变量,需要先对象的实例化,才可以使用其实例变量,不能直接使用;

    存放位置:static 修饰的类变量随着类的加载而存在共享区中;实例变量随着对象的建立而存在于堆内存中;

    生命周期:static 修饰的类变量随着类的加载而加载;实例变量随着对象的加载而加载。

  2. final 可以用来修饰哪些结构,分别为:

    final修饰类,表明该类不能被继承;final修饰方法,表明该方法不能重写;final修饰一个变量,表明该变量变为一个常量,在之后的操作里不能被修改。

  3. 类的属性赋值的位置有:

    1.默认初始化 2.显示初始化、代码块中赋值 3.构造器初始化 4.在方法中/通过对象.属性或者对象.方法中赋值

先后顺序为:
顺序是:1->2->3->4

  1. abstract 能修饰:

    修饰类,方法

    不能修饰属性和构造器。
    不能修饰私有方法、静态方法、final修饰的方法和final修饰的类。

    可以修饰类
    修饰后的类不能实例化,需要我们提供一个子类进行继承,如果这个子类是一个普通的类(非抽象类)的话就必须重写抽象类中的所有抽象方法。
    可以修饰方法
    抽象方法定义了一种功能的标准,具体的执行和实现需要子类去实现,接口的方法就是抽象方法。定义了方法而不实现,正因为这样,其子类可以有更多的展现空间和实现能力。

  2. 接口能继承接口,但是在实现的时候,类必须重写所继承接口及其父类接口的方法;
    抽象类能实现(implements)接口,抽象类可以实现接口,但实现其方法时必须写方法体,若不写方法体需加上abstract修饰,或可以直接不重写方法;
    抽象类继承非抽象的类?,如果子类也是一个抽象类,并不要求一定重写父类方法。如果子类不是抽象类,则要求子类一定要实现父类中的抽象方法。

  3. 抽象类和接口共同点和区别

    共同点:都可以作为形参和返回值;

    都可以生成.Class文件;

    他们都不能实例化对象,都只能通过实现类或者继承类去实例化;

    都可以包含抽象方法(接口中默认隐式声明为public [abstract]);

    声明的方法必须被继承的类全部实现。

    不同点:

    抽象类要被子类继承,接口要被类实现;

    接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

    抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

    接口成员方法只能是抽象方法默认修饰符:public abstract,而抽象类里可以没有抽象方法,也可以有普通类。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值