黑马程序员技术交流社区
标题:
小疑问??
[打印本页]
作者:
HM汪磊
时间:
2013-3-27 13:42
标题:
小疑问??
抽象类有构造函数吗??请仔细说明。
作者:
宋耀冬
时间:
2013-3-27 13:54
4) 抽象类的相关问题
a. 抽象类中是否有构造函数?
有,抽象类是一个父类,要给子类提供实例的初始化。
b. 抽象关键字abstract不可以和那些关键子共存?
final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。
private: 抽象类中的私有的抽象方法,不被子类所知,就无法被复写。
而抽象方法出现的就是需要被复写。
static:如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。可是抽象方法运行没意义。
c. 抽象类中可不可以么有有抽象方法?
抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。
这是我做的课程笔记的一部分 希望对你有帮助
作者:
张昶
时间:
2013-3-27 15:19
构造方法十分重要,他的名称必须和类名相同,并且没有返回值,在对象创建时被调用。在类中主要扮演着初始化全局变量的角色,作为方法的一员它同样拥有参数,运用参数使对象在建立的时候与外界交互,获得需要的参数来完善对象的初始化过程。这样说可能你觉得比较抽象,我举个例子给你看:ex1:public class Example1 { private int i; private String s; // 在这里我们声明了一个int和一个String,但是他们没有被初始化! //下面开始运用构造方法来初始化 public Example1(String s1;int i1) { i=i1; s=s1; } // 通过构造方法完成了初始化 public static void main(String[] args) { Example1 ex1=new Example1("I am example1",10); System.out.println("i="+ex1.i); System.out.println("s="+ex1.s);}如上所示,在main方法里我们创建了一个example1的对象ex1,并运用构造方法为变量i和String s赋值。 希望对你理解构造方法有所帮助,谢谢!参考 http://zhidao.baidu.com/question/46180637.html?si=9 1.接口完整定义public interface itest { public void itest1(); public void itest2();}接口不可以定义成STATIC和FINAL的类实现接口public class test implements itest{ public void itest1() {} public void itest2() {}}如果要实现多个接口public class test implements itest1,itest2,……2.public Son(){......} 是构造器,只跟当前类有关系,构造器不可以被继承,所以不可以重写。3.抽象类public abstract class atest{ abstract public void test();}子类中初始化,只要把抽象的具体化就好,比如方法加上方法体public class aatest extends atest{ public void test() { }}因为构造器里的变量与类的变量重名,this.year代表类的变量,year代表构造器里的变量。
作者:
侯振凯
时间:
2013-3-27 15:25
抽象类是可以存在构造方法的,因为抽象类依然使用的是类的继承关系,而且抽象类中也存在各个属性,所以子类在实例化之前是先要对父类进行实例化的。
例:
abstract class A{ // 是定义了一个抽象类
public A(){
System.out.println("A、抽象类中的构造方法。") ;
}
};
class B extends A{ // 继承抽象类,因为B是普通类,所以必须覆写全部抽象方法
public B(){
super() ;
System.out.println("B、子类中的构造方法。") ;
}
};
public class AbstractDemo{
public static void main(String args[]){
B b = new B() ;
}
};
程序执行结果:
A、抽象类中的构造方法
B、子类中的构造方法。
作者:
赵喜平
时间:
2013-3-27 16:33
抽象类可以有构造方法,构造方法不可继承,但是可以供子类用super()或者super(参数,参数,,,,)调用。
作者:
陆旭东
时间:
2013-3-27 18:25
这个问题应该这么跟你讲,抽象类本来就是用来被继承然后实现多态的,而且是无法实例化的,所以构造方法对它根本没有意义。自然也就没有所谓的有亦或是没有构造方法这一说了,当然你在抽象类中定义一个构造方法,也是可以的,编译不会出错。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2