本帖最后由 杨华东 于 2012-10-16 10:38 编辑
马州州 发表于 2012-10-16 01:41
说白了就是安全问题,如果你一个抽象方法都没有的话,你还定义成抽象类干啥?
如果有抽象方法的话,创建对 ...
这位兄弟,你忘了一件事
一个类被抽象就算没有抽象方法,但是还可以有一个作用:不让别人建立我的对象。
这与构造函数私有化有类似的作用。不过比构造函数私有化更好用!!
一个例子:
1,如果是把普通类的构造函数私有化了那么其子类就无法复用其构造函数。
如:
class Demo
{
int age ;
String name;
private Demo(int age,Strng name)
{
this.age=age;
this.name=name;
}
}
class Test extends Demo
{
Test(int age,String name)
{
super(age,name);//编译绝对错误!!!!因为父类Demo的构造函数私有化了。。
}
}
2,如果把普通类抽象一哈就是加一个修饰符abstract而已,此时我们同样可以不让别人建立我的对象。
同时呢我的构造函数不会受到任何影响,可以被我的子类继续使用!!!
这样一来我们可以实现两个目的:一,别人无法建立我的对象。二,我的构造函数又可以被我的子类继续使用
一举两得啊。。。。。。有同意的不????
如:
abstract class Demo
{
int age;
String name;
Demo(int age,String name)
{
this.age=age;
this.name=name;
}
classs Test extends Demo
{
Test(int age,String name)
{
super(age,name);//完全没错误。。。。
}
}
其实大家在这里就可以得出结论了:在Java中一个类被abstract修饰后就会被强制的不让别人建立其对象。。。是一种手段而已
这种手段恰好又不会影响到我正常使用其中的内容比如构造函数等。。。
这种手段到底是怎么做到的有点神秘!!! |