summaryrefslogtreecommitdiff
path: root/oop/02-inheritance-02-abstract-classes
diff options
context:
space:
mode:
Diffstat (limited to 'oop/02-inheritance-02-abstract-classes')
-rw-r--r--oop/02-inheritance-02-abstract-classes/.gitignore1
-rw-r--r--oop/02-inheritance-02-abstract-classes/Account.java24
-rw-r--r--oop/02-inheritance-02-abstract-classes/AccountTest.java22
-rw-r--r--oop/02-inheritance-02-abstract-classes/CheckingAccount.java20
-rw-r--r--oop/02-inheritance-02-abstract-classes/SavingsAccount.java9
5 files changed, 76 insertions, 0 deletions
diff --git a/oop/02-inheritance-02-abstract-classes/.gitignore b/oop/02-inheritance-02-abstract-classes/.gitignore
new file mode 100644
index 0000000..6b468b6
--- /dev/null
+++ b/oop/02-inheritance-02-abstract-classes/.gitignore
@@ -0,0 +1 @@
+*.class
diff --git a/oop/02-inheritance-02-abstract-classes/Account.java b/oop/02-inheritance-02-abstract-classes/Account.java
new file mode 100644
index 0000000..91acb95
--- /dev/null
+++ b/oop/02-inheritance-02-abstract-classes/Account.java
@@ -0,0 +1,24 @@
+
+public abstract class Account {
+
+ /* Declaring fields - represent state */
+ protected int accountNumber;
+ protected double balance;
+
+ public Account() {
+ ///
+ }
+
+ /* Declaring methods - represent operations */
+
+ public abstract void withdraw(double amount);
+
+ public void deposit(double amount) {
+ balance += amount;
+ }
+
+ public double getBalance() {
+ return balance;
+ }
+
+}
diff --git a/oop/02-inheritance-02-abstract-classes/AccountTest.java b/oop/02-inheritance-02-abstract-classes/AccountTest.java
new file mode 100644
index 0000000..cc5056b
--- /dev/null
+++ b/oop/02-inheritance-02-abstract-classes/AccountTest.java
@@ -0,0 +1,22 @@
+
+public class AccountTest {
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args) {
+ SavingsAccount a1 = new SavingsAccount();
+
+ Account a3 = new SavingsAccount();
+
+ Account a2 = new CheckingAccount();
+
+
+
+ CheckingAccount a4 = new CheckingAccount();
+
+
+// CheckingAccount a5 = new SavingsAccount(); // not working
+ }
+
+}
diff --git a/oop/02-inheritance-02-abstract-classes/CheckingAccount.java b/oop/02-inheritance-02-abstract-classes/CheckingAccount.java
new file mode 100644
index 0000000..a7c19b8
--- /dev/null
+++ b/oop/02-inheritance-02-abstract-classes/CheckingAccount.java
@@ -0,0 +1,20 @@
+
+public class CheckingAccount extends Account {
+
+
+ protected double overdraftLimit;
+
+
+ public void withdraw(double amount) {
+ double finalBalance = balance - amount;
+ if (finalBalance < 0) {
+ if (-finalBalance <= overdraftLimit) {
+ balance = finalBalance;
+ } else {
+ // throw exception
+ }
+ } else {
+ balance = finalBalance;
+ }
+ }
+}
diff --git a/oop/02-inheritance-02-abstract-classes/SavingsAccount.java b/oop/02-inheritance-02-abstract-classes/SavingsAccount.java
new file mode 100644
index 0000000..497fb3d
--- /dev/null
+++ b/oop/02-inheritance-02-abstract-classes/SavingsAccount.java
@@ -0,0 +1,9 @@
+
+public class SavingsAccount extends Account {
+
+ public void withdraw(double amount) {
+ if (balance >= amount) {
+ balance = balance - amount;
+ }
+ }
+}