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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张海洋 中级黑马   /  2013-3-26 09:34  /  2359 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张海洋 于 2013-3-26 17:45 编辑

abstract是否可以与static  final一起使用.

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

5 个回复

倒序浏览
final可以用于类名前,表示类不可被继承;final用于变量前,表示它是只能一次赋值的变量,如果初始化了那就是常量。
static可用于类内部的变量或方法前,表示这是整个类共享的变量和方法,与类对象无关。
abstract用于类名前表示一个抽象类,abstract用于成员方法前表示抽象方法,而抽象类内部至少要有一个抽象方法,这个跟final不能一起用,至于为什么,你一想就清楚了,抽象类本身必须有子类需要实现它的方法,但是final类又不能有子类,这不矛盾了么,所以不能一起用。
static final 用于修饰类的静态变量时表示一个常数,其实更多的还是用在接口里,毕竟用在类里面可能会被子类隐藏。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
不可以,private、static 、final这几个关键字都不能与abstract一起使用:

private abstract void show();
   priavte 修饰的抽象的方法,是不能被覆盖的。

static abstract void show();
     static 修饰的抽象的方法,可以由类名直接类名直接调用,也不需要对象,抽象方法没有方法体,失去了意义。

final    final修饰的类,不能被继承;修饰的方法不能被覆盖。(抽象类作为父类,如果使用final修饰,就不能有继承它的子类。)

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
abstract不能和final一起使用。
final修饰的方法不可被重写,而abstract修饰的方法是必须被重写的。final修饰的类不可以有子类,而abstract修饰的类是抽象类,必须被继承,实现里面的全部抽象方法,否则没有意义。所以,他们俩只能出现一个。
static修饰的都是属于类的。
abstract只能用于修饰方法和类(类里面的构造器时普通的构造器,没有抽象的构造器);
final:可以修饰方法,类,变量。
static:可以修饰方法,变量。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
static是可以修饰类的  叫做静态类 常用在内部类的修饰上
回复 使用道具 举报
本帖最后由 陈雨 于 2013-3-26 12:09 编辑

1.abstract:修饰类,当多个类出现相同功能,但是功能主体不同,这时可以进行向上抽取,只抽取功能定义而不抽取功能主体。因此抽象类方法要被使用,必须由子类复写抽象方法后,建立子类对象调用。所以abstract建立的类和方法是能被继承和复写的。
2.final:final可以修饰类、函数、变量,但被final修饰的类不能被继承,被fianl修饰的方法不能被复写。
3.static:主要是修饰成员变量和成员函数。但是除了被对象调用外,还能被类名调用,调用方式,类名.静态成员,他是随类的加载而加载的,在多态应用中,父类中静态方法是无法被子类覆盖的。
所以static+final可以同时存在修饰变量,final+abstract是不能同时存在修饰类的,至于static+abstract毕老师视频上写的static主要修饰的是成员,能否修饰类还没学到,不发表看法。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马