หน้าเว็บ

วันอังคารที่ 25 ธันวาคม พ.ศ. 2555

inheritance javascript

example 1<Student inherit Person>

//example 1
//define super class Person
function Person(personId, name){
    this.personId = personId || ""; //constructor
    this.name = name || "";
    /**
    * meaning constructor 
    * if (name is undefined) this.name = ""; 
    * else this.name = name;
    */ 

    //getter and setter method
    this.setPersonId = function(personId){
        this.personId = personId;
        return this;
    }

    this.getPersonId = function(){
        return this.personId;
    }

    this.setName = function(name){
        this.name = name;
        return this;
    }

    this.getName = function(){
        return this.name;
    }
}

//define sub class Student
function Student(studentId){
    this.studentId = studentId || "";

    //getter and setter method
    this.setStudentId = function(studentId){
        this.studentId = studentId;
        return this;
    }

    this.getStudentId = function(){
        return this.studentId;
    }
}

//Student inherit Person
Student.prototype = new Person; //*********** 

var student = new Student("0000000000")
                  .setPersonId("1111111111111")
                  .setName("Redcrow");
console.log(student);
//

example 2 <NumberFormatException inherit Exception>

//example 2
//define super class Exception
function Exception(name, message){
    this.name = name || "Exception";
    this.message = message || "";
    
    //getter and setter method
    this.printException = function(){
        console.error(this.name + " : " + this.message);
    }
    
    this.getMessage = function(){
        return this.message;
    }
    
    this.getName = function (){
        return this.name;
    }
    
    this.toString = function(){
        return this.name + " : [" + this.message + "]";
    }
}
   
//define sub class NumberFormatException 
function NumberFormatException(message){
    this.message = message || "";
}   

//NumberFormatException inherit Exception
NumberFormatException.prototype = new Exception("NumberFormatException");
   
   
try{
    throw new NumberFormatException("hello NumberFormatException!");
}catch(ex){
    console.log(ex);
    console.log(ex.toString());
    console.log("excetion name : " + ex.getName());
    console.log("exception message : " + ex.getMessage());
    
    if(ex instanceof NumberFormatException){
        ex.printException();  
        console.log("ex instanceof NumberFormatException");
    }

    if(ex instanceof Exception){
        console.log("ex instanceof Exception");
    }
     
}finally{
    console.log("finally");
}
//

example 3 ดัดแปลงจาก example 2
/**
 * public static class Class
 */
var Class = {
    extends : function(subClass, superClass) {
        var Define = function() {};
        Define.prototype = superClass.prototype;
        subClass.prototype = new Define();

        subClass.prototype.constructor = subClass;
        subClass.superClass = superClass.prototype;

        if(superClass.prototype.constructor == Object.prototype.constructor) {
            superClass.prototype.constructor = superClass;
        }
    }
};



/**
 * Exception class
 */
var Exception = function(name, message){
    this.name = name || "Exception";
    this.message = message || "";
};

Exception.prototype.printException = function(){
    console.error(this.name + " : " + this.message);
};

Exception.prototype.getMessage = function(){
    return this.message;
};

Exception.prototype.getName = function (){
    return this.name;
};

Exception.prototype.toString = function(){
    return this.name + " : [" + this.message + "]";
};
//end Exception class


/**
 * NumberFormatException class
 */
var NumberFormatException = function(message){
    NumberFormatException.superClass.constructor.call(this, "NumberFormatException", message);
};   


//NumberFormatException inherit Exception
Class.extends(NumberFormatException, Exception);
   
   
try{
    throw new NumberFormatException("hello NumberFormatException!");
}catch(ex){
    console.log(ex);
    console.log(ex.toString());
    console.log("excetion name : " + ex.getName());
    console.log("exception message : " + ex.getMessage());
    
    if(ex instanceof NumberFormatException){
        ex.printException();  
        console.log("ex instanceof NumberFormatException");
    }

    if(ex instanceof Exception){
        console.log("ex instanceof Exception");
    }
     
}finally{
    console.log("finally");
}
//

ไม่มีความคิดเห็น:

แสดงความคิดเห็น