JavaScript Class & Inheritance

by Rafa Ola

JavaScript

/** Composition EG. 1: The Author and Book Classes */
class Author {

   // The constructor i.e Similar to Java
   // Giving the construtor a default value
   constructor({name = 'yo', email = 'yo', gender = 'yo'}){
    // private instance variables
    // This. -> will make them public
    this.name  = name;
    this.email = email;
    this.gender = gender;     

   }
   // Setters and getters
    getName(){
     //document.write(this.name) 
     return this.name;
    } 
    
    getEmail(){
    document.write(this.email);    
    return this.email;
    }
    
    getGender(){
   document.write(this.gender);
    return this.gender;
    }
       
    setEmail(newEmail){
    this.email = newEmail;
    }

}

class Book{
constructor (bookName, author = {}, price, qty){
this.bookName = bookName;
this.author = author;
this.price = price;
this.qty = qty;
}

getBookName(){
document.write(this.bookName) 
return this.bookName;
}

getAuthor(){
document.write(this.author) 
return this.author;
}

getPrice(){
document.write(this.price) 
return this.price;
}

setPrice(p){
this.price = p;
}

getQty(){
document.write(this.qty) 
return this.qty;
}

setQty(q){
this.qty = q;
}
}
/** Test Driver Program for Author & Book classes*/
// We need an Author instance to create a Book instance
let ahTeck = new Author({name:"Tan Ah Teck", email: "[email protected]", gender:'m'});
console.log(ahTeck);
// Test Book's constructor
dummyBook = new Book("Java for dummies", ahTeck, 9.99, 99);
console.log(dummyBook);
// Test Setters and Getters
dummyBook.setPrice(8.88);
dummyBook.setQty(88);
console.log(dummyBook);
console.log("name is: " + dummyBook.getBookName());
console.log("price is: ", dummyBook.getPrice());
console.log("qty is: ", dummyBook.getQty());
console.log("author is: " , dummyBook.getAuthor());
console.log("author's name is: " + dummyBook.getAuthor().getName());
console.log("author's email is: " + dummyBook.getAuthor().getEmail());
console.log("author's gender is: " +...