1 package com.kai.li; 2 3 //Client 4 public class Text1{ 5 public static void main(String[] args){ 6 7 //Outter class's instance 8 Outter o=new Outter(); 9 10 //The first question 11 //Imitate an class of Music text 12 System.out.println(); 13 System.out.println("Following is the first question."); 14 Outter.Music m=o.new Music(); 15 Outter.Instrument<String> i=o.new Wind<String>("Wind"); 16 m.tune(i); 17 i=o.new Brass<String>("Brass"); 18 m.tune(i); 19 System.out.println(); 20 21 //The second question 22 System.out.println("Following is the second question."); 23 Outter.Monkey<String,Integer> monkey=o.new People<String,Integer>("kaili",31); 24 monkey.speak(); 25 monkey.think(); 26 System.out.println(); 27 28 //The third question 29 System.out.println("Following is the third question."); 30 Outter.Human<String,Integer> human=o.new Man<String,Integer>("Aorbeme",60); 31 human.people(); 32 Outter.Man<String,Integer> man=o.new Man<String,Integer>("lim",2); 33 if(human instanceof Outter.Man<?,?>) 34 man=(Outter.Man<String,Integer>)human; 35 man.people(); 36 man.work(); 37 human=o.new Human<String,Integer>("father",100); 38 human.people(); 39 } 40 } 41 42 //Outter class of all the questions 43 class Outter{ 44 45 //The first question 46 //Imitate three class by Instrument,Wind and Brass about music instrument 47 //The following is instrument class 48 class Instrument<T>{ 49 protected void play(){ 50 System.out.println("I can play~"); 51 } 52 //the function following will be override by his children class 53 //it's an empty funcion 54 protected void play2(){} 55 } 56 //The following is Wind class 57 class Wind<T> extends Instrument<T>{ 58 private T name; 59 Wind(T name){ 60 this.name=name; 61 } 62 public T getName(){ 63 return name; 64 } 65 public void play(){ 66 System.out.println("I am "+getName()+",I can play with wu... wu... wu... !"); 67 } 68 public void play2(){ 69 System.out.println("I can play as the Wind"); 70 } 71 } 72 //The following is Brass class 73 class Brass<T> extends Instrument<T>{ 74 private T name; 75 Brass(T name){ 76 this.name = name; 77 } 78 public T getName(){ 79 return name; 80 } 81 public void play(){ 82 System.out.println("I am "+getName()+",I can play with ba... ba... ba..."); 83 } 84 public void play2(){ 85 System.out.println("I can play as the Brass"); 86 } 87 } 88 //the following is Music class only have one function by text 89 class Music{ 90 public void tune(Instrument<? extends String> i){ 91 i.play(); 92 i.play2(); 93 } 94 } 95 96 //the following is the second question 97 class Monkey<T2,T3>{ 98 private T2 name; 99 private T3 age; 100 101 protected Monkey(T2 name){ 102 this.name=name; 103 } 104 protected Monkey(T2 name,T3 age){ 105 this(name); 106 this.age=age; 107 } 108 protected void setName(T2 name){ 109 this.name=name; 110 } 111 protected void setAge(T3 age){ 112 this.age=age; 113 } 114 protected T2 getName(){ 115 return name; 116 } 117 protected T3 getAge(){ 118 return age; 119 } 120 protected void speak(){ 121 System.out.println("yi ya... yi ya... yi ya..."); 122 } 123 //using at override 124 protected void think(){} 125 } 126 class People<T2,T3> extends Monkey<T2,T3>{ 127 128 public People(T2 name){ 129 super(name); 130 } 131 public People(T2 name,T3 age){ 132 super(name,age); 133 } 134 public void speak(){ 135 System.out.println("中国的!小子,你哪的?"); 136 } 137 public void think(){ 138 System.out.println("I am a person,I can think."); 139 System.out.println("So,you can keep your mouth."); 140 System.out.println("Then, do think!"); 141 } 142 } 143 144 //following is the third question 145 class Human<T4,T5>{ 146 private T4 name; 147 private T5 age; 148 protected Human(T4 name,T5 age){ 149 this.name=name; 150 this.age=age; 151 } 152 protected void setName(T4 name){ 153 this.name=name; 154 } 155 protected void setAge(T5 age){ 156 this.age=age; 157 } 158 protected T4 getName(){ 159 return name; 160 } 161 protected T5 getAge(){ 162 return age; 163 } 164 protected void people(){ 165 System.out.println("men and women are person"); 166 } 167 } 168 class Man<T4,T5> extends Human<T4,T5>{ 169 public Man(T4 name,T5 age){ 170 super(name,age); 171 } 172 public void people(){ 173 System.out.println("i am a man"); 174 } 175 public void work(){ 176 System.out.println("a man should work hard"); 177 } 178 } 179 class Women<T4,T5> extends Human<T4,T5>{ 180 public Women(T4 name,T5 age){ 181 super(name,age); 182 } 183 public void people(){ 184 System.out.println("i am a women"); 185 } 186 public void work(){ 187 System.out.println("a women can work hard as a man"); 188 } 189 } 190 }