黑马程序员技术交流社区
标题:
抽象类中可不可以没有抽象方法?
[打印本页]
作者:
zjm10zj
时间:
2013-3-25 23:43
标题:
抽象类中可不可以没有抽象方法?
本帖最后由 zjm10zj 于 2013-3-26 22:21 编辑
抽象类中可不可以没有抽象方法?
作者:
曹玉龙
时间:
2013-3-26 00:03
本帖最后由 曹玉龙 于 2013-3-26 22:13 编辑
可以啊,更正下,有不实例化的作用.
随手弄个代码,看下
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
//无抽象方法的抽象类
abstract class aaa
{
public static void bbb()
{}
}
//复制MP3((把c盘目录下的a.mp3中的内容复制到d盘下的b.mp3中)
public class Demo
{
public static void main(String[] args)throws IOException
{
BufferedInputStream br = new BufferedInputStream(new FileInputStream("c:\\a.mp3"));
BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream("f:\\b.mp3"));
byte[] bys = new byte[1024];
int len = 0;
while((len=br.read(bys))!=-1)
{
bw.write(bys,0,len);
bw.flush();
}
bw.close();
br.close();
}
}
复制代码
作者:
祁振朋
时间:
2013-3-26 00:12
当然可以没有抽象方法,比如我不想让这个类被实例化,也就是说不能通过new来新建对象,就可以定义个抽象类。
再比如接口,就是特殊的抽象类,里面也可以没有抽象方法。只是声明一些规范。
有一些抽象类的总结,你可以看一下
抽象类的特点:
1.抽象类不可以实例化 不能new
2.抽象类是用来被继承的。
3.抽象类中可以包含抽象方法.抽象方法是用abstract修饰的方法.
抽象方法是用来被重写的。
抽象方法的格式:
修饰符 abstract 方法的返回值类型 方法名(参数);
如果父类中包含抽象方法,那么子类必须将父类中所有抽象方法重写。
抽象类的细节
1.如果父类是抽象类,子类是普通类 那么子类必须重写父类中的抽象方法。
2.如果父类是抽象类,子类是抽象类 子类可以选择是否重写。
3.父类是普通类,子类是抽象类。这种情况也可以。
4.抽象类中可不可以没有抽象方法。可以 5.普通类中可不可以有抽象方法。 不可以
6.抽象类中有没有构造? 有 帮助子类实例化.
7.关于abstract是否可以与static final一起使用.
static与abstract不可以 static修饰的方法可以通过类名调用。
final与abstract不可以 这两个是完全相反的操作。
private与abstract不可以 因为private私有化了,就不能被继承了。
作者:
江大海
时间:
2013-3-26 08:25
你弄个空参数的
作者:
曾祥旭
时间:
2013-3-26 10:51
可以的,但是很少见,目的就是不让该类创建对象。AWT的适配器对象就是这种类。
通常这个类中的方法有方法体,但是没有内容。如:
abstract class Demo{
void show1(){
}
void show2(){
}
}
作者:
_王涛
时间:
2013-3-26 12:36
抽象类可以没有抽象方法,但是如果你的一个类已经声明成了抽象类,即使这个类中没有抽象方法,它也不能再实例化,即不能直接构造一个该类的对象。
如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类,否则编译通不过。
作者:
何俊森
时间:
2013-3-26 15:33
祁振朋 发表于 2013-3-26 00:12
当然可以没有抽象方法,比如我不想让这个类被实例化,也就是说不能通过new来新建对象,就可以定义个抽象类 ...
{:soso_e179:} 回答的真细。。
作者:
陆旭东
时间:
2013-3-26 18:49
这个自然是可以的了。这么说吧,如果一个类中包含了抽象方法那这个类就一定是抽象类,反之如果某个类是抽象类,那么该类既可以包含抽象方法,也可以包含具体方法,当然也可以不包含抽象方法,但是那样没有意义,就又变成了一个普通的类了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2