問1の解答.
次に示す解答例では
「this」というキー・ワードが何かを調べてみてください.
「MyBook.java」
public class MyBook {
// fields
private String name;
private String author;
private MyDateOfIssue date;
// -
private String comment;
private int bookmark;
// constructors
public MyBook() {
this("","",0,0);
}
public MyBook(String name,String author) {
this(name,author,0,0);
}
public MyBook(String name,String author,int year,int month) {
this.name=name;
this.author=author;
date=new MyDateOfIssue(year,month);
// -
comment="";
bookmark=0;
}
// mthods
public void setName(String name) {
this.name=name;
}
public String getName() {
return name;
}
public void setAuthor(String author) {
this.author=author;
}
public String getAuthor() {
return author;
}
public void setDate(int year,int month) {
date=new MyDateOfIssue(year,month);
}
public String getDate() {
return date.getIssue();
}
public void setComment(String comment) {
this.comment=comment;
}
public String getComment() {
return comment;
}
public void setBookmark(int bookmark) {
this.bookmark=bookmark;
}
public int getBookmark() {
return bookmark;
}
// inner class
private class MyDateOfIssue {
// fields
private int year;
private int month;
// constructors
public MyDateOfIssue() {
this(0,0);
}
public MyDateOfIssue(int year,int month) {
this.year=year;
this.month=month;
}
// methods
public void setYear(int year) {
this.year=year;
}
public int getYear() {
return year;
}
public void setMonth(int month) {
this.month=month;
}
public int getMonth() {
return month;
}
public String getIssue() {
return year+"/"+month;
}
}
}
|
問2の解答.
次に示す解答例では
「super」というキー・ワードが何かを調べてみてください.
「MyLibraryBook.java」
public class MyLibraryBook extends MyBook {
// fields
private boolean isRental;
// constructors
public MyLibraryBook() {
this("","",0,0,false);
}
public MyLibraryBook(String name,String author) {
this(name,author,0,0,false);
}
public MyLibraryBook(String name,String author,int year,int month) {
this(name,author,year,month,false);
}
public MyLibraryBook(String name,String author
,int year,int month,boolean isRental) {
super(name,author,year,month);
this.isRental=isRental;
}
// mthods
public void setRentable(boolean isRental) {
this.isRental=isRental;
}
public boolean isRentable() {
return isRental;
}
}
|
どうですか? クラスの定義方法は,「なんとなく」で良いですが,わかりましたか? それに加えて,継承が使えることの ありがたみ は感じることができましたか?
Java では C++ のような多重継承はできません. それに代わる手法は存在します. それは仕様の複雑さを避けるためですが,単一継承だけでも非常に有益です.
オブジェクト指向言語としての真髄(言い過ぎ?)が,ココにあります.