[转]EXT 中的面向对象特性小结

1.命名空間:
 對類的定義方式
Extjs 代碼:
   Ext.namespace("org.bestupon");
java代碼:
    package org.bestupon
   
實例: 
Ext.namespace("Ext.bestupon");
Ext.bestupon.Person = Ext.emptyFn;
/**
* Ext.bestupon.Person = function() {}
**/


2.類屬性
/*
 * js 的類屬性
  相當于Java代碼
  private String name;
  public String getName() {
   return this.name;
  }
  public void setName(String name) {
   this.name = name;
  }
  private String sex;
  
  public String getSex() {
   return this.sex;
  }
  public void setSex(String sex) {
   this.sex = sex;
  }
*/
 實例:
 ///js 代碼
 Ext.apply(Ext.bestupon.Person.prototype,{
       name :"BestUpon"
      });
  java代碼:
  package Ext.bestupon
  class Person{
   private String name = "BestUpon";
   public String getName() {
    return this.name;
   }
   
   public void setName(String name) {
    this.name = name;
   }
  }    

/**
 * 客戶端代碼要寫的越少越好,越多的話,要占用下載時間,
 */
 
 3.類實例
 ExtJs代碼
 fn:function(){
   alert(String.format("姓名:{0},性別:{1}",this.name,this.sex));
 }
 Java代碼:
   public void fn() {
    System.out.print("姓名:%s,性別:%s",this.name,this.sex);
   }
  
  實例:
  Ext.apply(Ext.bestupon.Person.prototype,{
       name:"",
       sex:"",
       fn:function() {
        alert(String.format("姓名:{0},性別:{1}",this.name,this.sex));
       }
  });
 
 
 4.類靜態方法:
 
 在一個類級別上共享的方法
 實例:
 Extjs 代碼
 Ext.bestupon.Person.fn = function(_name,_sex) {
    var _person = new Ext.bestupon.Person();
    _person.name = _name;
    _person.sex = _sex;
    _person.fn();//fn的實例
   
 }
 Java代碼:
 Person.fn(String name,String sex) {
  Persong person = new Person();
  person.setName(name);
  person.setSex(sex);
  person.fn();
 }
 
 
 頁面調用:Ext.bestupon.Person("姓名","性別");
 
 閑言碎語:工程話代碼;
 
 5.類的構造方法
 在初始話一個對象的同時執行的方法
 代碼:
  Ext.bestupon.Person = function(_cfg) {
   Ext.apply(this,_cfg);
  }
  Java代碼:
  Ext.bestupon.Person(String name,String sex){
   this.name = name;
   this.sex = sex;
  }
  
  實例:
  Ext.bestupon.Person = function(_cfg) {
   Ext.apply(this,_cfg);
  };
  Ext.bestupon.Person.fn = function(_name,_sex) {
   var _person = new Ext.bestupon.Person({name:_name,sex:_sex});
   _person.print();
  }
  Ext.apply(Ext.bestupon.Person.prototype,{
   fn:function() {
    alert(String.format("姓名:{0},性別:{1}",this.name,this.sex));
   }
  })
  頁面調用:Ext.bestupon.Person("姓名","性別");
  
  6.類繼承
  Ext.extend(當前類,被繼承的類,{屬性:屬性值});
  
  Ext.extend(Ext.bestupon.Student,Ext.bestupon.Person,{
   job:"學生"
  });
  
  Java 代碼:
  
  class Student extend Person{
   public Student(String name,String sex){
    super(name,sex);
    this.setJob("學生");//this.job = "學生"
   }
  }
  
7.父類方法的重寫
/**
 * 單純的繼承關系
 * 重寫父類的方法
 * @class Ext.bestupon.Student
 * @extends Ext.bestupon.Person
 */
Ext.extend(Ext.bestupon.StudentReloadFn,Ext.bestupon.Person,{
 job:"学生",
 print:function() {
  alert(String.format("{0}是一位{1}{2}",this.name,this.sex,this.job));
 }
});

Java代碼:
class StudentReloadFn extends Person {
  public StudentReloadFn (String name,String sex){
      super(name,sex);
      this.setJob("學生");//this.job = "學生"
  }
  public void fn() {
    System.out.print("%s是一位%s學生",this.name,this.sex);
   }
}

8.空間的別名
要求,別名的第一個字母需要大寫

實例:
Ext.namespace(Ext.bestupon);

別名:Bu = Ext.bestupon

9.類別名:
類別名全是大寫:
PS = Ext.bestupon.Person


10.事件隊列
對于外界影響的反應
實現:Ext.util.Obervable類支持

你可能感兴趣的:(java,ext,prototype)