网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  浅谈java中类的构造器     
  文章作者:未知  文章来源:水木森林  
  查看:73次  录入:管理员--2007-11-17  
 
   现在越来越多的人开始学习java,很多人求学心切,免不了贪多而忽略了一些基本的,也是必须搞清楚的概念。下面我就来说说java里类的构造器概念。大家知道java作为一门oo语言,和c++,smalltalk等一样有3个最关键
  
  1。adt
  2。继承
  3。多态

    当然对于java,类的概念是重中之重,对于类的构造和对象的实现就需要用到构造器。
  例如:class professer(){
    private string name;
    private int number;
    public professer(string n,int no){
    name=n;
    number=no;
    }
    public teach(){} 
   }
  下面我们要对这个类的对象实例化:professer p =new professer()
  以上就是构造器的语法了,这里用到了关键字
  new
  
  讲到这里还没有什么可以困扰我们的地方,那么下面我们将借助有关继承的一些例子来继续阐述构造器问题:
  假设:class oldprofesser(){
     private string name;
     private int number ;
     private int age;
     public do(){}
    } 
  
  有人也许会问为什么这个oldprofesser类里面为什么没有定义构造器?其实,java已经我们定义了一个无参数的默认构造器,即oldprofesser(){}
  ok, 到这里为止,没有任何问题,然而,一旦让oldprofesser继承professer并实例化,编译器就会报错,look:
     class oldprofesser extends professer(){
       private string name;
       private int number ;
       private int age;
     
       public do(){}
    public static void mian(string[] args){
       oldprofesser o=new oldprofesser();
    }
  很抱歉你得到的是一条出错的信息,有人问了,你说oldprofesser的构造器是默认的我才这样写,没错,oldprofesser确实存在这样一个无参的构造器,这样写法换做oldprofesser不做professer的子类的情况下一定是正确的。
  
    你所需要知道的是下面一个规则:
  1。如果一个类没有设置字定义构造器,那么编译器会默认一个无参构造器。
  2。在子类调用构造器时,总是先调用基类的构造器。
  3。如果自定义了构造器,那么默认构造器将不存在。
  
   在上例中,oldprofesser调用默认构造器前,编译器自动调用基类professer的默认构造器,然而,professer有了自定义构造器,所以默认构造器不存在了,编译器报错…………
    那么我们该怎么做呢?像下面这样就ok了。
  
    class oldprofesser extends professer(){
        private string name;
        private int number;
        private int age;
        oldprofesser(string n,int no,int age){
        super(n,no);
        this.age=age;
        }
        public do(){}
     }
    
     这就是在子类中显式的调用基类构造器,注意,super必须是{}中的第一个执行语句。其实我们还有另外一种方法,在professer类里面补充一个消失掉的默认构造器,如下:
   
    class professer(){
      private string name;
      private int number;
      public professer(string n,int no){
      name=n;
      number=no;
     }
      professe(){}
      public teach(){} 
   }
   
  值得一提的是构造器方法中,构造器的名称要与类的名称完全相同,包括大小写。
     好了,关于构造器的一些基本问题讲的差不多了,请多指正…………
 
 
上一篇: java远程方法调用    下一篇: java方法调用的绑定
  相关文档
从java嵌套类中访问外部类成员 11-16
实战 j2ee 开发购物网站 开发环境篇 11-20
java的字串运算符+ 11-17
使用 netbeans ide 5.0开发jsp快速入门 11-16
java 字符编码问题 11-17
java socket编程(一) socket传输模式 11-16
安全的基础----学习java安全之前的准备 11-17
绘制整洁的uml图 明晰才能被人采纳 11-17
一个简单的jdbc包装器(2) 11-17
java集合框架 11-17
我对类,方法,接口的认识 11-17
java程序员之jsp设计模式 11-17
构建j2ee应用程序的任务列表 11-17
java高手帮你解析xml配置文件的读取操作 09-10
你知道java中float的取值范围吗 11-17
插入排序算法的java实现 11-16
concat 方法 (array) 11-16
java环境变量的设置 11-17
java文件操作详解 11-16
关于垃圾收集的一些话 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息