39. Java ã®ã¢ã¯ã»ã¹ä¿®é£Ÿåãšã¯äœã§ãã? ååãä»ããŠãã ããããããã¯äœã«äœ¿ãããŸãã?
以åãã«ãã»ã«åãå®çŸããããã«äœ¿çšããã Java ã®èŠçŽ ã«é¢ãã質åã§ã¢ã¯ã»ã¹ä¿®é£Ÿåã«ã€ããŠèª¬æããŸãããããã§ããæãåºãããŠããããŸããJava ã®ã¢ã¯ã»ã¹ä¿®é£Ÿåã¯ãç¹å®ã® Java ã³ã³ããŒãã³ãã«ä»äžãããã¢ã¯ã»ã¹ã®ã¬ãã«ãèšè¿°ããããŒã¯ãŒãã§ãã次ã®ã¢ã¯ã»ã¹ä¿®é£ŸåãååšããŸãã- public â ãã®ä¿®é£Ÿåã§ããŒã¯ãããèŠçŽ 㯠public ã§ããã€ãŸãããã£ãŒã«ããšã¡ãœãããããã³ public 修食åã䜿çšããŠå®£èšãããã¯ã©ã¹ã¯ãç¬èªã®ããã±ãŒãžãšå€éšããã±ãŒãžã®äž¡æ¹ã§ä»ã®ã¯ã©ã¹ããåç §ã§ããŸãã
- protected â ãã®ä¿®é£Ÿåã§ããŒã¯ãããèŠçŽ ã¯ãçŸåšã®ããã±ãŒãžå ã®ç¬èªã®ã¯ã©ã¹ãŸãã¯æŽŸçã¯ã©ã¹ (ä»ã®ããã±ãŒãžå ã«ããå Žåã§ã) ã®ã©ãããã§ãã¢ã¯ã»ã¹ã§ããŸãã
- ã¢ã¯ã»ã¹ä¿®é£Ÿåãæå®ãããŠããªãå Žåãããã©ã«ã(ãŸãã¯ä¿®é£ŸåããŸã£ãããªã) ãæé»çã«é©çšãããŸããããã¯ãä»ã®ããã±ãŒãžã«ãã掟çã¯ã©ã¹ã§è¡šç€ºãããç¹ãé€ããŠãåã®ãã®ãšäŒŒãŠããŸãã
- private â ããã¯ãã¹ãŠã®ä¿®é£Ÿåã®äžã§æããã©ã€ããŒãã§ããçŸåšã®ã¯ã©ã¹å ã®èŠçŽ ã®ã¿ã«ã¢ã¯ã»ã¹ã§ããŸãã
40. éçã¡ãœãããšééçã¡ãœããã®äž»ãªæ©èœã«ååãä»ããŸã
äž»ãªéãã¯ãéçã¡ãœãããã¯ã©ã¹ã«å±ããŠããããšã§ããå®éããã®ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããå¿ èŠã¯ãããŸãããéçã¡ãœããã¯ã¯ã©ã¹åããã®ã¿åŒã³åºãããšãã§ããŸããããšãã°ãç«ãæ«ã§ãããã®éçã¡ãœããããããšããŸããpublic class CatService {
public static void petTheCat(Cat cat) {
System.out.println("Pet the cat: " + cat.getName());
}
ãããåŒã³åºãããã« CatServiceã¯ã©ã¹ ã®ã€ã³ã¹ã¿ã³ã¹ã¯å¿
èŠãããŸããã
Cat cat = new Cat(7, "Bobby");
CatService.petTheCat(cat);
察ç
§çã«ãéåžžã®ã¡ãœããã¯ãªããžã§ã¯ãã«ãã€ã³ããããŸã (å±ããŸã)ãããããåŒã³åºãã«ã¯ãã¡ãœãããåŒã³åºãããã€ã³ã¹ã¿ã³ã¹ (ãªããžã§ã¯ã) ãå¿
èŠã§ããããšãã°ãç«ã«ééçã¡ãœããmeow() ããããšããŸãã
class Cat {
public void meow() {
System.out.println("Meow! Meow! Meow!");
}
ãã®ã¡ãœãããåŒã³åºãã«ã¯ãç«ã®ç¹å®ã®ã€ã³ã¹ã¿ã³ã¹ãå¿
èŠã§ãã
Cat cat = new Cat(7, "Bobby");
cat.meow();
41. éçã¡ãœãããšééçã¡ãœããã«é©çšãããäž»ãªå¶éã¯äœã§ãã?
åã«è¿°ã¹ãããã«ãéåžžã® (ééç) ã¡ãœããã®äž»ãªå¶éã¯ãã¡ãœãããåŒã³åºãããã€ã³ã¹ã¿ã³ã¹ãåžžã«ååšããå¿ èŠãããããšã§ãããã ããéçã¡ãœããã§ã¯ããã¯å¿ èŠãããŸãããããã«ãéçã¡ãœããã§ã¯ãã¡ãœããã®çŸåšã®ãªããžã§ã¯ããååšããããããªããžã§ã¯ãã®èŠçŽ ãžã® thisåç §ã䜿çšã§ããŸããã42. static ããŒã¯ãŒãã¯äœãæå³ããŸãã? éçã¡ãœããã¯ãªãŒããŒã©ã€ããŸãã¯ãªãŒããŒããŒãã§ããŸãã?
staticããŒã¯ãŒãã§ããŒã¯ãããèŠçŽ ã¯ãã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ã¯ãªããã¯ã©ã¹èªäœã«å±ããŸããã¯ã©ã¹èªäœãããŒãããããšãã«ããŒããããŸããéçèŠçŽ ã¯ããã°ã©ã å šäœã§åãã§ãããééçèŠçŽ ã¯ç¹å®ã®ãªããžã§ã¯ãã§ã®ã¿åãã§ãã次ã®èŠçŽ ã¯éçã«ããããšãã§ããŸãã- ã¯ã©ã¹ã®ãã£ãŒã«ãã
- ã¯ã©ã¹ã®åæåãããã¯ã
- ã¯ã©ã¹ã®ã¡ãœããã
- ã¯ã©ã¹ã®ãã¹ããããã¯ã©ã¹ (ãã¡ããããããããŒãããžãŒã§ã)ã
43. ã¡ãœããã¯éçã§ãããšåæã«æœè±¡çã§ããããšã¯ã§ããŸãã?
ããã«ã€ããŠã¯ã以åã®èšäºã§ãã§ã«åçããŸãããã¡ãœããã¯æœè±¡çã§ãããšåæã«éçã§ããããšã¯ã§ããŸãããã¡ãœãããæœè±¡ã¡ãœããã§ããå Žåãããã¯åã¯ã©ã¹ã§ãªãŒããŒã©ã€ãããå¿ èŠãããããšãæå³ããŸãããã ããéçã¡ãœããã¯ã¯ã©ã¹ã«å±ããŠããããããªãŒããŒã©ã€ãã§ããŸãããããã«ããççŸãçããã³ã³ãã€ã©ãŒã¯ããã«æ°ã¥ããæãããšã«ãªããŸãããã®ãããªç¶æ³ã«é¥ã£ãå Žåã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£ãæ£ãããã©ããçå£ã«æ€èšããå¿ èŠããããŸã (ãã³ã: æããã«äœããééã£ãŠããŸã)ã44. éçã¡ãœãããééçã¡ãœããã®éäžã§äœ¿çšã§ããŸãã? ããã³ãã®éïŒãªãïŒ
éçã¡ãœãããééçã¡ãœããã§äœ¿çšã§ããŸããããã劚ãããã®ã¯äœããããŸããããã ãããã®éã¯äžå¯èœã§ããéçã¡ãœããã¯ãã¯ã©ã¹ã®ç¹å®ã®ã€ã³ã¹ã¿ã³ã¹ãåç §ããã«ééçã¡ãœããã䜿çšã§ããŸãããã¯ã©ã¹ã®éçã¡ã³ããŒã¯thisåç §ã«ã¢ã¯ã»ã¹ã§ããªãããšã«æ³šæããŠãã ãããã¯ã©ã¹ã®å ·è±¡ãªããžã§ã¯ãã¯å¥œããªã ãæã€ããšãã§ããããããã«èªå·±åç §ã§ããthisåç §ãå«ãŸããŸããã§ã¯ãã©ã®åç §ã䜿çšãããã決å®ããã«ã¯ã©ãããã°ããã§ãããã? ãããšãããã§ã¯ãããŸããããã®ãããéçèŠçŽ ã¯ãç¹å®ã®ãªããžã§ã¯ããžã®åç §ããªããã°ãééçèŠçŽ ãåç §ã§ããŸãããåºæ¬çã«ãéçã¡ãœããã¯ãç¹å®ã®ãªããžã§ã¯ããžã®åç §ãããå Žåã«ã®ã¿ãééçã¡ãœããã䜿çšã§ããŸããããšãã°ãã¡ãœããã®åŒæ°ãšããŠå ¥åããããã®ã¯æ¬¡ã®ãšããã§ããpublic static void petTheCat(Cat cat) {
System.out.println("Pet the cat: " + cat.getName());
}
ããã§ã¯ãéçpetTheCat()ã¡ãœãããã Catãªããžã§ã¯ãã®éåžžã®ééçã¡ãœããã§ããgetNameãåŒã³åºããŠããããšãããããŸãã
45. ã€ã³ã¿ãŒãã§ãŒã¹ãšã¯äœã§ãã? æçµçãªã€ã³ã¿ãŒãã§ãŒã¹ã¯ååšããã®ã§ãããã?
Java ã«ã¯å€éç¶æ¿ããªãããšãæãåºããŠãã ãããã€ã³ã¿ãŒãã§ãŒã¹ã¯ããã«ä»£ãããã®ã§ããã€ã³ã¿ãŒãã§ã€ã¹ã¯ãéåžžã«ç¡é§ãçããã¯ã©ã¹ã®ãããªãã®ã§ãããããã¯æ©èœãå®çŸ©ããŸãããå ·äœçãªå®è£ ã¯å®çŸ©ããŸããããã®ã¿ã¹ã¯ã¯ããããã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããã¯ã©ã¹ã«ä»»ãããŸããã€ã³ã¿ãŒãã§ãŒã¹ã®äŸ:public interface Animal {
void speak();
}
ã¯ã©ã¹ã«ããã€ã³ã¿ãŒãã§ãŒã¹ã®å®è£
äŸ
class Cat implements Animal {
@Override
public void speak() {
System.out.println("Meow! Meow! Meow!");
}
}
ã€ã³ã¿ãŒãã§ã€ã¹ã®äœ¿çšã«é¢ããŠç¥ã£ãŠããã¹ãéèŠãªäž»ãªäºé
ã¯æ¬¡ã®ãšããã§ãã
-
ã€ã³ã¿ãŒãã§ã€ã¹ ã¡ãœããã«ã¯ããããŒã®ã¿ãå«ããå¿ èŠããããŸãããããã¯ç¹å®ã®ã¡ãœããæ¬äœãæã£ãŠã¯ãªããŸãããã€ãŸããæœè±¡çã§ããå¿ èŠããããŸã (ãã ãã abstractããŒã¯ãŒãã¯äœ¿çšããŸãã)ãäŸå€ãšããŠãã¡ãœããæ¬äœãå¿ èŠãªéçã¡ãœãããšããã©ã«ã ã¡ãœããããããŸãã
-
ã¯ã©ã¹ã¯å€ãã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ã§ããŸã (åè¿°ããããã«ãã€ã³ã¿ãŒãã§ã€ã¹ã¯å€éç¶æ¿ã®ä»£æ¿æ段ã§ã)ãã€ã³ã¿ãŒãã§ã€ã¹åã¯ã¡ãœãã ããããŒå ã§ã«ã³ãã§åºåãããŸããclass Lion 㯠Animal, Wild ãå®è£ ããŸãã
-
ã€ã³ã¿ãŒãã§ã€ã¹ã¯ã interfaceããŒã¯ãŒãã䜿çšããŠäœæãããŸãã
-
ã¯ã©ã¹ãã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããå ŽåãimplementsããŒã¯ãŒãã䜿çšããŸãã
-
ç¹å®ã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããã¯ã©ã¹ã¯ããã®æœè±¡ã¡ãœããããã¹ãŠå®è£ ããããããèªäœãæœè±¡ã¡ãœãããšããŠå®£èšããå¿ èŠããããŸãã
-
ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããäž»ãªç®çã¯ãããªã¢ãŒãã£ãºã ãå®è£ ããããšã§ã (ãªããžã§ã¯ãã«ããŸããŸãªåœ¢åŒãåãèœåãäžããããš)ã
-
ååãšããŠãã¡ãœããã®ã¢ã¯ã»ã¹ä¿®é£Ÿåã¯ã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯ç€ºãããŸããããããã¯ããã©ã«ãã§publicã§ããã public以å€ã®ä¿®é£Ÿåãæå®ããããšã¯ã§ããŸãããJava 9 以éã§ã¯ãã¡ãœããã§ãã©ã€ããŒã修食åã䜿çšã§ããããã«ãªããŸããã
-
ããã©ã«ãã§ã¯ãã€ã³ã¿ãŒãã§ã€ã¹å€æ°ã¯static Finalã§ããèšãæããã°ããããã¯å®æ°ã§ããåžžã«ã€ã³ã¿ãŒãã§ã€ã¹å ã§çŽæ¥åæåããå¿ èŠããããŸãã
-
ã€ã³ã¿ãŒãã§ã€ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããããšã¯ã§ããŸããã
46. éçãã£ãŒã«ãã¯ã©ãã§åæåã§ããŸãã?
éçãã£ãŒã«ãã¯åæåã§ããŸãã- 宣èšçŽåŸã«çå· ( = ) ã䜿çšããŸãã
- éçåæåãããã¯å ã
- ééçåæåãããã¯å (ãã ãããªããžã§ã¯ããäœæããããã³ã«ããã®åæåãããã¯ãå®è¡ããããšéçãã£ãŒã«ããäžæžããããããšãç解ããå¿ èŠããããŸãã
- ã¯ã©ã¹ã³ã³ã¹ãã©ã¯ã¿ãŒå ãã³ã³ã¹ãã©ã¯ã¿ãŒãåŒã³åºããããã³ (ã€ãŸãããã®ã³ã³ã¹ãã©ã¯ã¿ãŒã䜿çšããŠãªããžã§ã¯ããäœæããããã³)ããã£ãŒã«ãã¯äžæžããããŸãã
- éçã¡ãœããã®å Žåã
- ééçã¡ãœããã®å Žåã
- å ¥ãåã«ãªã£ãéçã¯ã©ã¹ãšééçã¯ã©ã¹ãããŒã«ã«ãªå¿åã¯ã©ã¹ã
47. å¿åã¯ã©ã¹ãšã¯äœã§ãã?
å¿åã¯ã©ã¹ã¯ãç¬èªã®åãæããªãã¯ã©ã¹ã§ããç§ã¯äœã話ããŠããã®ã§ããããïŒã€ã³ã¿ãŒãã§ã€ã¹ã«ã€ããŠè©±ãããšãã«ããªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ã¯äœæã§ããªããšè¿°ã¹ãŸãããäœæã§ããã®ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã®ã¿ã§ããã¯ã©ã¹ã«ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ãããããªãããã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ãããªããžã§ã¯ããå¿ èŠãªå Žåã¯ã©ãããã°ããã§ãããã? ãããŠãããããããããªããžã§ã¯ãã®å¯äžã®çšéã§ãããŸããæ¬æ Œçãªå®è£ ã¯ã©ã¹ãäœæããå¿ èŠã¯ãããŸãããã©ããã£ãŠãããŸããïŒããã¯æ£ããïŒå¿åã¯ã©ã¹ã䜿çšããããšã§ïŒ ããã€ãã®Animalã€ã³ã¿ãŒãã§ãŒã¹ããããšããŸããpublic final interface Animal {
public void speak();
}
å¿åã¯ã©ã¹ã䜿çšããŠç¹å®ã®ã€ã³ã¿ãŒãã§ã€ã¹ãã€ã³ã¹ã¿ã³ã¹åããå Žåã¯ã次ã®ããã«ããŸãã
Animal cat = new Animal() {
@Override
public void speak() {
System.out.println("Meow! Meow! Meow!");
}
};
ãã®åŸããã®ãªããžã§ã¯ããšãã®å®è£
ãããspeech()ã¡ãœãããå®å
šã«äœ¿çšã§ããããã«ãªããŸããèšãæããã°ãå¿åã¯ã©ã¹ã¯ã€ã³ã¿ãŒãã§ã€ã¹ãšãã®ãã¹ãŠã®æœè±¡ã¡ãœãããä»ããã§å®è£
ããŸããããããªããšãå®è£
ãããŠããªã/æœè±¡ã¡ãœãããååšãããããã€ã³ã¿ãŒãã§ã€ã¹/æœè±¡ã¯ã©ã¹ ãªããžã§ã¯ããäœæã§ããŸãããåè¿°ããããã«ãå¿åã¯ã©ã¹ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã®æœè±¡ã¡ãœãããå®è£
ããããã ãã§ãªããæœè±¡ã¯ã©ã¹ã®æœè±¡ã¡ãœãããå®è£
ããããã«ã䜿çšãããŸãããã®ã¢ãããŒãã¯ããªããžã§ã¯ãã 1 å䜿çšãããå ŽåããŸãã¯ç¹å®ã®ã¡ãœããå®è£
ã 1 åã ãå¿
èŠãªå Žåã«é©ããŠããŸããå¿
èŠãªæœè±¡ã¯ã©ã¹/ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããå¥ã®ã¯ã©ã¹ãäœæããå¿
èŠã¯ãããŸããããã ããå¿åã¯ã©ã¹ãä»äºã§äœ¿çšãããããšã¯ã»ãšãã©ãªãããšã«ã泚æããŠãã ãããååãšããŠéåžžã¯ã©ã¹ãåªå
ãããŸããå¿åã¯ã©ã¹ã®è©³çŽ°ã«ã€ããŠã¯ããã®èšäºã
åç
§ããŠãã ããã
48. ããªããã£ãã¯ã©ã¹ãšã¯äœã§ãã?
Java ã«ã¯ããªããã£ã ã¯ã©ã¹ã®ãããªãã®ãååšããªããããããã¯èª€è§£ãæã質åãããããã²ã£ããã®è³ªåã ãšæããŸããååšããã®ã¯ã以åã«æ€èšããããªããã£ãåã®æŠå¿µã®ã¿ã§ããJava ã«ã¯ã byteãshortãintãlongãfloatãdoubleãcharãbooleanã® 8 ã€ã®ããªããã£ãåãããããšãæãåºããŠãã ããã49. ã©ãããŒã¯ã©ã¹ãšã¯äœã§ãã?
Java ã§ããªããã£ãåã䜿çšããå Žåã®äž»ãªåé¡ã¯ãããªããã£ãåãã¯ã©ã¹ã§ã¯ãªããJava ã OOP èšèªã§ããããšã§ããã€ãŸãããã®èšèªã§æžãããããã°ã©ã ã¯ããªããžã§ã¯ãéã®å¯Ÿè©±ã«çžåœããŸããããããããªããã£ãã¯ãªããžã§ã¯ãã§ã¯ãããŸããããããã«ã¯ã Objectã¯ã©ã¹ã®æšæºã¡ãœããã§ãã£ãŠãã¡ãœããããããŸããããããããããå ã®ããŒãšããŠããªããã£ãã䜿çšããå¿ èŠãããå Žåã¯ã©ãããã°ããã§ãããã? 次ã«ããã®hashCode()ã¡ãœãããåŒã³åºãå¿ èŠããããŸããããã§ãã®quals()ã¡ãœãããåŒã³åºãããšãã§ããŸãããããäœïŒããªããã£ãã§ã¯ãªãã¯ã©ã¹ãå¿ èŠã«ãªãç¬éããããããããŸããããã«ãããããªããã£ã㯠OOP ã®æŠå¿µãã®ãã®ã«éåãããããããã°ã©ã å ã§äœ¿çšã§ããªããªããæãŸãããªãèŠçŽ ã«ãªããŸããããããç¶æ³ã¯æã£ãã»ã©æªãã¯ãããŸãããçµå±ã®ãšãããJava ã«ã¯ããªããã£ã ã©ãããŒã®æŠå¿µããããŸããJava ã§ã¯ããã¹ãŠã®ããªããã£ãåã« 1 ã€ã®ãã€ã³ãã€ãŸãã©ãã㌠ã¯ã©ã¹ããããŸãã- ãã€ã-> Byte.class
- short -> Short.class
- int -> Integer.class
- ãã³ã°-> Long.class
- float -> Float.class
- double -> Double.class
- æå->æå.ã¯ã©ã¹
- ããŒã«å€-> Boolean.class
50. å ¥ãåã¯ã©ã¹ãšã¯äœã§ãã? ã©ãã§äœ¿ãããŠããŸãã?
ãã¹ããããã¯ã©ã¹ã¯ãããèªäœãå¥ã®ã¯ã©ã¹ã®ã¡ã³ããŒã§ããã¯ã©ã¹ã§ããJava ã«ã¯ããããã®ãã¹ããããã¯ã©ã¹ã 4 çš®é¡ãããŸãã 1. å éšã¯ã©ã¹ ãã®çš®é¡ã®ã¯ã©ã¹ã¯ãå¥ã®ã¯ã©ã¹ã®æ¬äœå ã§çŽæ¥å®£èšãããŸããå éšã¯ã©ã¹ã¯ééçãã¹ããããã¯ã©ã¹ã§ãããå€éšã¯ã©ã¹ã®ãã©ã€ããŒã ãã£ãŒã«ããŸãã¯ã€ã³ã¹ã¿ã³ã¹ ã¡ãœããã«ã¢ã¯ã»ã¹ã§ããŸããäŸãšããŠãã·ããŠããšããåç©ãããåç©åãäœæããŠã¿ãŸããããpublic class Zoo {
class Zebra {
public void eat(String food) {
System.out.println("Zebra eats " + food);
}
}
}
è€éã§ã¯ãããŸãããïŒå
éšã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããäŸãèŠãŠã¿ãŸãããã
Zoo.Zebra zebra = new Zoo().new Zebra();
zebra.eat("apple");
ãã§ã«èŠãããã«ãæåã«ãããå²ãã¯ã©ã¹ã®ãªããžã§ã¯ããäœæããå¿
èŠããããŸãã次ã«ããªããžã§ã¯ãåç
§ã䜿çšããŠå
éšã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããŸãããŸããå
éšã¯ã©ã¹ (ééçãã¹ããããã¯ã©ã¹) ã¯éçã¡ãœãããéçãã£ãŒã«ããæã€ããšãã§ããªãããšãææããŠãããŸããããã¯ãŸãã«ãå
éšã¯ã©ã¹ããã®å€éšã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã«æé»çã«é¢é£ä»ããããŠãããããå
éšã¯ã©ã¹å
ã§éçã¡ãœããã宣èšã§ããªãããã§ãã 2. éçãã¹ããããã¯ã©ã¹ ãããã®ã¯ã©ã¹ã¯åã®ã«ããŽãªã«äŒŒãŠããŸãããã¯ã©ã¹å®£èšã«staticã¢ã¯ã»ã¹ä¿®é£Ÿåãå«ãŸããŠããŸãããã®çš®ã®ã¯ã©ã¹ã¯å€éšã¯ã©ã¹ã®ééçãã£ãŒã«ãã«ã¢ã¯ã»ã¹ã§ããªããããå
éšã¯ã©ã¹ãšãããããå€éšã¯ã©ã¹ã®éçéšåã®ããã«èŠããŸãããã ãããã®ã¯ã©ã¹ã¯ããã©ã€ããŒã ã¡ã³ããŒãå«ããå€éšã¯ã©ã¹ã®ãã¹ãŠã®éçã¡ã³ããŒã«ã¢ã¯ã»ã¹ã§ããŸããéçãã¹ããããã¯ã©ã¹ã®äŸ:
public class Zoo {
static class Zebra {
public void eat(String food) {
System.out.println("Zebra eats " + food);
}
}
}
åã®ãã®ãšã¯å°ãç°ãªãæ¹æ³ã§äœæãããŠããŸãã
Zoo.Zebra zebra = new Zoo.Zebra();
zebra.eat("apple");
ããã§ã¯ãéçãã¹ããããã¯ã©ã¹ã®ãªããžã§ã¯ããäœæããããã«å€éšã¯ã©ã¹ã®ãªããžã§ã¯ãã¯å¿
èŠãããŸãããå€éšã¯ã©ã¹å
ã§ãã¹ããããã¯ã©ã¹ãèŠã€ããã«ã¯ããã¹ããããã¯ã©ã¹ã®ååãç¥ãå¿
èŠãããã ãã§ãã 3. ããŒã«ã« ã¯ã©ã¹ ããŒã«ã« ã¯ã©ã¹ã¯ãã¡ãœããã®æ¬äœå
ã§å®£èšãããã¯ã©ã¹ã§ããããŒã«ã« ã¯ã©ã¹ã®ãªããžã§ã¯ãã¯ããããå²ãã§ããã¡ãœããå
ã§ã®ã¿äœæããã³äœ¿çšã§ããŸããäŸïŒ
public class Zoo {
public void feed(String animal, String food) {
switch(animal) {
case "zebra":
class Zebra {
public void eat(String food) {
System.out.println("Zebra eats " + food);
}
}
Zebra zebra = new Zebra();
zebra.eat(food);
...
以äžã«äŸã瀺ããŸãã
Zoo zoo = new Zoo();
zoo.feed("zebra", "apple");
feed()ã¡ãœãã ã®ã³ãŒããèŠãŠããªãã£ãããããŒã«ã« ã¯ã©ã¹ãååšããããšããçããªãã§ããã? ããŒã«ã« ã¯ã©ã¹ã¯staticãŸãã¯transientã«ããããšã¯ã§ããŸãããã abstractãŸãã¯FinalãšããŠããŒã¯ããããšã¯ã§ããŸã(ããã 2 ã€ã®ä¿®é£Ÿåãåæã«äœ¿çšãããšç«¶åãçºçãããããäžæ¹ãŸãã¯ä»æ¹ãæå®ããŸãããäž¡æ¹ãæå®ããããšã¯ã§ããŸãã)ã 4. å¿åã¯ã©ã¹ å¿åã¯ã©ã¹ã«ã€ããŠã¯äžã§ãã§ã«èª¬æããŸããããèŠããŠãããšãããå¿åã¯ã©ã¹ã¯ã€ã³ã¿ãŒãã§ã€ã¹ãšã¯ã©ã¹ãšãã 2 ã€ã®ãœãŒã¹ããäœæã§ããŸãã ãããã䜿çšããçç± ãã¹ããããéçã¯ã©ã¹ãšééçã¯ã©ã¹ã䜿çšãããã®ã¯ãããäžè¬çãªã¯ã©ã¹ã«å°ããªã¯ã©ã¹ãåã蟌ã¿ããããããŸãšããŠä¿æããããé«ãåéæ§ãšå
±éã®ç®çãæãããæ¹ãããå Žåãããããã§ããåºæ¬çã«ããã¹ããããã¯ã©ã¹ã䜿çšãããšãã³ãŒãã®ã«ãã»ã«åã匷åã§ããŸããã¯ã©ã¹ãåäžã®ã¡ãœããå
ã§æä»çã«äœ¿çšãããå Žåã¯ãããŒã«ã« ã¯ã©ã¹ã®äœ¿çšãéžæããããšãã§ããŸãããã®å Žåãã³ãŒããã¢ããªã±ãŒã·ã§ã³å
šäœã«åæ£ããå¿
èŠãããã§ãããã? ãããããšã¯ãããç§ã®çµéšäžãããŒã«ã« ã¯ã©ã¹ã䜿çšããŠãã人ãèŠãããšããªãããšãä»ãå ããŠãããŸãããªããªããããŒã«ã« ã¯ã©ã¹ãå¿
èŠãã©ããã¯éåžžã«è°è«ã®äœå°ãããããã§ããã€ã³ã¿ãŒãã§ã€ã¹ãŸãã¯æœè±¡ã¯ã©ã¹ã®ç¹å®ã®å®è£
ã 1 åã ãå¿
èŠãªå Žåã¯ãå¿åã¯ã©ã¹ã䜿çšããããšããããŸãããã®å Žåãå®è£
ãåããæ¬æ Œçãªã¯ã©ã¹ãå¥åã«äœæããå¿
èŠã¯ãããŸããã代ããã«ãã·ã³ãã«ããä¿ã¡ãå¿åã¯ã©ã¹ã䜿çšããŠå¿
èŠãªã¡ãœãããå®è£
ãããªããžã§ã¯ãã䜿çšãããããããå¿ããŸãã (ãã¡ãããã¬ããŒãž ã³ã¬ã¯ã¿ãŒã¯å¿ããŸããã§ãã)ãããã®èšäºãèªããšããã¹ããããã¯ã©ã¹ã«ã€ããŠã®ç解ãæ·±ãŸããŸãã
51. ã¯ã©ã¹ã«ã¯ã©ã®ãããªã¢ã¯ã»ã¹ä¿®é£Ÿåãå«ããããšãã§ããŸãã?
ããŸããŸãªã¿ã€ãã®ã¯ã©ã¹ããããããŸããŸãªã¢ã¯ã»ã¹ä¿®é£Ÿåããããã«é©çšãããŸãã- å€éšã¯ã©ã¹ã«ã¯publicã¢ã¯ã»ã¹ä¿®é£Ÿåãæå®ããããšãã修食åããŸã£ããæå®ããªãããšãã§ããŸã(ããã©ã«ãã®ä¿®é£Ÿå)ã
- å éšã¯ã©ã¹(ééçå ¥ãåã¯ã©ã¹) ã¯ã4 ã€ã®ã¢ã¯ã»ã¹ä¿®é£Ÿåã®ããããã䜿çšã§ããŸãã
- å ¥ãåã«ãªã£ãéçã¯ã©ã¹ã¯ãprotectedãé€ãã¢ã¯ã»ã¹ä¿®é£Ÿåã 1 ã€æã€ããšãã§ããŸããããã¯ããã®ä¿®é£Ÿåãç¶æ¿ãæå³ããã¯ã©ã¹ã®éçã¡ã³ããŒãšççŸããããã§ã (éçã¡ã³ããŒã¯ç¶æ¿ãããŸãã)ã
- ããŒã«ã« ã¯ã©ã¹ã¯ããã©ã«ãã®ä¿®é£Ÿåã®ã¿ãæã€ããšãã§ããŸã (ã€ãŸãã修食åã¯ãŸã£ãããããŸãã)ã
- å¿åã¯ã©ã¹ã«ã¯ã¯ã©ã¹å®£èšããªããããã¢ã¯ã»ã¹ä¿®é£ŸåããŸã£ãããããŸããã