1 / 12

Figure _____________ Dim1 :double Dim2:double +Figure() +Area():double

Motivation. Figure _____________ Dim1 :double Dim2:double +Figure() +Area():double. Rectangle _____________ +Rectangle() +Area():double. Triangle _____________ +Triangle() +Area():double. Abstract Classes.

Télécharger la présentation

Figure _____________ Dim1 :double Dim2:double +Figure() +Area():double

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Motivation Figure _____________ Dim1 :double Dim2:double +Figure() +Area():double Rectangle _____________ +Rectangle() +Area():double Triangle _____________ +Triangle() +Area():double

  2. Abstract Classes • An abstract class is a class that can have abstract methods (i.e a method with only heading with no body of executable statements) • We can not create an object of abstract classes i.e abstract class objects can not be instantiated • An abstract class needs to be extended by sub classes to provide the implementation for the abstract methods. • Abstract classes may contain static methods • abstract and static keyword combination is wrong • abstract static void print(); wrong • Abstract classes may extend either another abstract class or concrete class • Abstract classes may include constructors, nested classes and interfaces 8. Abstract classes has either public, protected, private or package accessibility

  3. Abstract Classes • Syntax : abstract class <classname> { ........................... abstract <return type> methodname(<parameter List>); abstract <return type> methodname(<parameter List>); } Note: • Abstract class can have one or more abstract methods • Abstract classes may extend another class , implements another interface , may have concrete methods

  4. Example 1 abstract class A { public int show() { System.out.println("Class A"); return 0; } // End of show() Method } What’s wrong with the code No Error Code will compile successfully

  5. abstract class A { public int show() { System.out.println("Class A"); return 0; } } class sample { public static void main(String args[]) { A a1 = new A(); } } Example 2 What’s wrong with the code sample.java:14: A is abstract; cannot be instantiated A a1 = new A(); ^

  6. abstract class A { public int show() { System.out.println("Class A"); return 0; } void print(); } // End of class A Example 3 What’s wrong with the code sample.java:8: missing method body, or declare abstract void print(); ^ 1 error abstract class A { public int show() { System.out.println("Class A"); return 0; } abstract void print(); } // End of class A

  7. EXAMPLES ABSTRACT CLASS <<abstract>> ACCOUNT CHECKING SAVING

  8. abstract class Account { private String name; private String actno; private double balance; private String addr; // Overloaded Constructors Account(String n,String a) { name = n; actno= a; balance = 0.0; } Account(String n,String a,double b) { name = n; actno= a; balance = b; } // Accessor Methods String getName() { return name;} String getactno() { return actno;} double getbalance() { return balance;} // Mutator Method only for balance void setbalance(double amount) { this.balance = amount;} void showAccountDetails() { System.out.println("Name :"+this.getName()); System.out.println("Account No :"+this.getactno()); System.out.println("Balance :"+this.getbalance()); } // provide abstract methods abstract double withdraw(double amount); abstract void deposit(double amount); } // END OF Account CLASS

  9. class Saving extends Account { Saving(String n,String a) { super(n,a); System.out.println("Saving Account Created"); showAccountDetails(); } Saving(String n,String a,double b) { super(n,a,b); System.out.println("Saving Account Created"); System.out.println("Name :"+this.getName()); System.out.println("Account No :"+this.getactno()); System.out.println("Balance :"+this.getbalance()); showAccountDetails(); }

  10. double withdraw(double amount) { /* if( balance == 0) return 0.0; if( balance < amount ) return 0.0; balance = balance - amount; */ if(this.getbalance() == 0) return 0.0; if(this.getbalance() < amount ) return 0.0; setbalance(getbalance() - amount); return amount; } void deposit(double amount) { setbalance(getbalance() + amount); return ; } }//end of Saving class

  11. class Checking extends Account { Checking(String n,String a,double b) { super(n,a,b); System.out.println("Checking Account Created"); showAccountDetails(); } double withdraw(double amount) { /* if( balance - 100 == 0) return 0.0; if( balance -100 < amount ) return 0.0; balance = balance - amount - 100; */ if(this.getbalance() - 100 == 0) return 0.0; if(this.getbalance() - 100 < amount ) return 0.0; setbalance(this.getbalance() - amount); return amount; } void deposit(double amount) { setbalance(this.getbalance() + 0.9 * amount) ; return ; } }//end of Checking class

  12. class AccountTest { public static void main(String args[]) { Checking c1 = new Checking("Rahul Sharma","C106726",100000); Checking c2 = new Checking("Raman Kumar","C106727",100000); Saving s1 = new Saving("Kumar Sharma","S106726",100000); Saving s2 = new Saving("Mohan Lal","S106727"); c1.withdraw(2000); c1.showAccountDetails(); c2.deposit(10000); c2.showAccountDetails(); s1.deposit(900); s1.showAccountDetails(); s2.withdraw(400); s2.showAccountDetails(); } }

More Related