黑马程序员技术交流社区
标题:
抽象类不能实例化??
[打印本页]
作者:
wangxinyu
时间:
2012-6-13 02:55
标题:
抽象类不能实例化??
抽象类不能被实例化,怎么我看见很多抽象类都可以使用getInstance()方法实例化呢?
作者:
江南
时间:
2012-6-13 02:59
不能实例化的意思是说外部不能直接通过new创建对象,但是通过其本身提供的静态getInstance()来创建建对象。
作者:
李元峰
时间:
2012-6-13 03:14
你说的是 class.newInstance() 这个方法吧?
任何抽象接口 或者类是不能实例化的,但是 他可以指向实现了该接口的对象 然后再来
就是父类引用指向子类对象,
作者:
马东华
时间:
2012-6-13 07:28
当多个类中出现相同功能,但是功能主体不同,这时也可以进行向上抽取,只抽取功能定义。
而不能抽取功能主体。
Abstract:关键字
抽象类:
1. 抽象方法一定定义在抽象类中。
2. 抽象方法和抽象都必须被abstract关键字修饰
3. 抽象类不可以用new创建对象,因为调用抽象方法没意义
4. 抽象类中的方法要被使用必须由子类复写其所有的抽象方法,建立子类对象。如果子类值覆盖了部分抽象方法,那么该子类还是一个抽象类。
抽象类与一般类:
都是描述事物,只不过该事物中出现了看不懂的东西,这个不确定的部分,也是该事物的功能,需要明确出现,但无法定义主体,通过抽象方法来实现。
抽象类比一般类多个抽象函数,就是在类中可以定义抽象方法。
抽象类不能实例化。
作者:
胡卿
时间:
2012-6-13 08:11
抽象类是不能实例化,因为抽象类不能new新对象,但是抽象类或者接口可以通过继承或者实现的方式由子类去实例化
作者:
刘笑
时间:
2012-6-13 09:21
不能实例化可以简单理解为不能用new,但是可以用getInstance()来实现new的功能,即创建对象。同时,使用getInstance()有诸多好处:
1。 new 一定要生成一个新对象,分配内存;getInstance()则不一定要再次创建,它可以把一个已存在的引用给你使用,这在效能上优于new;
2。new创建后只能当次使用,而getInstance()可以跨栈区域使用,或者远程跨区域使用。所以getInstance()通常是创建static静态实例方法的。
作者:
付信榕
时间:
2012-6-13 09:33
首先,抽象类一定是不能实例化的。通过getInstance获得的实例对象是该抽象类的可实例化的子类的对象。看个实例:
Calendar中的getInstance ( ) Calendar Cal = Calendar.getInstance();
Calendar是抽象类不能直接通过new对象,但是提供的静态getInstance()就是给Calendar创建对象。
从Calendar.getInstance() 中所获得的实例其实就是一个 "GreogrianCalendar" 对象
GreogrianCalendar就是Calendar的子类,他实现了Calendar里面的抽象方法。
作者:
涂金哲
时间:
2012-6-13 15:37
超类中声明一个给定结构的抽象内容,但不提供每个方法的完整实现,即不能为方法创建一个有意义的实现。超类仅定义了子类所共享向子通用形式,而让每个子类去填写细节内容。所以子类必须实现方法。抽象类不能通过new运算符直接实例化,抽象类不题全定义,这样建立的对象无用.实例化抽象类的对象可以使用工厂方法(factory method),工厂方法仅仅是一种约定,表示类中的静态方法返回类的个实例。getInstance ()方法是工厂方法。因此可实例化抽象类的对象。另外可以创建子类对象实现超类实例化。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2