def customer = Customer {
firstName: "John";
lastName: "Doe";
phoneNum: "(408) 555-1212"
address: Address {
street: "1 Main Street";
city: "Santa Clara";
state: "CA";
zip: "95050";
}
}
customer.printName();
customer.printPhoneNum();
customer.printAddress();
class Address {
var street: String;
var city: String;
var state: String;
var zip: String;
}
class Customer {
var firstName: String;
var lastName: String;
var phoneNum: String;
var address: Address;
function printName() {
println("Name: {firstName} {lastName}");
}
function printPhoneNum(){
println("Phone: {phoneNum}");
}
function printAddress(){
println("Street: {address.street}");
println("City: {address.city}");
println("State: {address.state}");
println("Zip: {address.zip}");
}
}
Inheriting from Other Class
他のクラスを継承する
abstract class Account {
var accountNum: Integer;
var balance: Number;
function getBalance(): Number {
return balance;
}
function deposit(amount: Number): Void {
balance += amount;
}
function withdraw(amount: Number): Void {
balance -= amount;
}
}
ここの abstract は、Account objects は直接作成できないことを意味している
Account を継承したクラスは次のようになる
class SavingsAccount extends Account {
var minBalance = 100.00;
var penalty = 5.00;
function checkMinBalance() : Void {
if(balance < minBalance){
balance -= penalty;
}
}
}
この場合、Account の変数と関数はそのまま保持されて、新たに minBalance と penalty 変数と checkMinBalance 関数が追加されている
Account の関数を上書きするには override を使う
class CheckingAccount extends Account {
var hasOverDraftProtection: Boolean;
override function withdraw(amount: Number) : Void {
if(balance-amount<0 and hasOverDraftProtection){
// code to borrow money from an
// overdraft account would go here
} else {
balance -= amount;
// may result in negative account balance!
}
}
}
0 件のコメント:
コメントを投稿