java7-4 继承的练习

1、Override和Overload的区别,Overload能改变返回值类型吗?

答:

Override就是方法重写:在子类中,出现和父类中一模一样的方法声明的现象

Overload就是方法重载:在同一类中,出现的方法名相同,参数列表不同的现象

Overload可以改变返回值类型,因为它和返回值类型无关

2、this关键字和super关键字分别代表什么?以及他们各自的使用场景

答:

this:代表当前类的对象引用

super:代表父类存储空间的标识(也就是父类的引用,通过这个可以访问父类的成员)

场景:

成员变量:this.成员变量 super.成员变量

构造方法:this.(...) super(...)

成员方法:this.成员方法 super.成员方法

1、练习:

  1 /*
  2 
  3 学生案例和老师案例讲解
  4 
  5 学生:
  6 
  7 成员变量;姓名,年龄
  8 
  9 构造方法:无参,带参
 10 
 11 成员方法:getXxx()/setXxx()
 12 
 13 老师:
 14 
 15 成员变量;姓名,年龄
 16 
 17 构造方法:无参,带参
 18 
 19 成员方法:getXxx()/setXxx()
 20 
 21 看上面两个类的成员,发现了很多相同的东西,所以我们就考虑抽取一个共性的类:
 22 
 23 人:
 24 
 25 成员变量;姓名,年龄
 26 
 27 构造方法:无参,带参
 28 
 29 成员方法:getXxx()/setXxx()
 30 
 31 学生 继承 人
 32 
 33 老师 继承 人
 34 
 35 */
 36 
 37 //定义人类
 38 
 39 class Person {
 40 
 41 //姓名
 42 
 43 private String name;
 44 
 45 //年龄
 46 
 47 private int age;
 48 
 49 public Person() {
 50 
 51 }
 52 
 53 public Person(String name,int age) { //"林青霞",27
 54 
 55 this.name = name;
 56 
 57 this.age = age;
 58 
 59 }
 60 
 61 public String getName() {
 62 
 63 return name;
 64 
 65 }
 66 
 67 public void setName(String name) {
 68 
 69 this.name = name;
 70 
 71 }
 72 
 73 public int getAge() {
 74 
 75 return age;
 76 
 77 }
 78 
 79 public void setAge(int age) {
 80 
 81 this.age = age;
 82 
 83 }
 84 
 85 }
 86 
 87 //定义学生类
 88 
 89 class Student extends Person {
 90 
 91 public Student() {}
 92 
 93 public Student(String name,int age) { //"林青霞",27
 94 
 95 //this.name = name; 这样子出错,因为name和age是private的,私人的,这样无法访问的。
 96 
 97 //this.age = age; 而如果都不写,则直接走父类的无参构造。结果是 null 0
 98 
 99 super(name,age); //正确的,显示地调用父类的带参构造
100 
101 }
102 
103 }
104 
105 //定义老师类
106 
107 class Teacher extends Person {
108 }
109 
110 class ExtendsTest4 {
111 
112 public static void main(String[] args) {
113 
114 //创建学生对象并测试
115 
116 //方式1
117 
118 Student s1 = new Student();
119 
120 s1.setName("林青霞");
121 
122 s1.setAge(27);
123 
124 System.out.println(s1.getName()+"---"+s1.getAge());
125 
126 //方式2
127 
128 Student s2 = new Student("林青霞",27);
129 
130 System.out.println(s2.getName()+"---"+s2.getAge());
131 
132 //补齐老师类中的代码并进行测试。
133 
134 }
135 
136 }

2、练习

  1 package java8;
  2 
  3 /*
  4 
  5 猫狗案例讲解
  6 
  7 先找到具体的事物,然后发现具体的事物有共性,才提取出一个父类。
  8 
  9 猫:
 10 
 11 成员变量:姓名,年龄,颜色
 12 
 13 构造方法:无参,带参
 14 
 15 成员方法:
 16 
 17 getXxx()/setXxx()
 18 
 19 eat()
 20 
 21 palyGame()
 22 
 23 狗:
 24 
 25 成员变量:姓名,年龄,颜色
 26 
 27 构造方法:无参,带参
 28 
 29 成员方法:
 30 
 31 getXxx()/setXxx()
 32 
 33 eat()
 34 
 35 lookDoor()
 36 
 37 共性:
 38 
 39 成员变量:姓名,年龄,颜色
 40 
 41 构造方法:无参,带参
 42 
 43 成员方法:
 44 
 45 getXxx()/setXxx()
 46 
 47 eat()
 48 
 49 把共性定义到一个类中,这个类的名字叫:动物。
 50 
 51 动物类:
 52 
 53 成员变量:姓名,年龄,颜色
 54 
 55 构造方法:无参,带参
 56 
 57 成员方法:
 58 
 59 getXxx()/setXxx()
 60 
 61 eat()
 62 
 63 猫:
 64 
 65 构造方法:无参,带参
 66 
 67 成员方法:palyGame()
 68 
 69 狗:
 70 
 71 构造方法:无参,带参
 72 
 73 成员方法:lookDoor()
 74 
 75 */
 76 
 77  
 78 
 79 class dongWu{
 80 
 81 // 成员变量
 82 
 83 private String name;
 84 
 85 private String color;
 86 
 87 private int age;
 88 
 89 //无参构造方法
 90 
 91 public dongWu(){}
 92 
 93 //成员方法
 94 
 95 public void show(String name,String color,int age){
 96 
 97 this.name = name;
 98 
 99 this.color = color;
100 
101 this.age = age;
102 
103 }
104 
105 //成员方法
106 
107 public String getName(){
108 
109 return name;
110 
111 }
112 
113 public String getColor(){
114 
115 return color;
116 
117 }
118 
119 public int getAge(){
120 
121 return age;
122 
123 }
124 
125 public void setName(String name){
126 
127 this.name = name;
128 
129 }
130 
131 public void setColor(String color){
132 
133 this.color = color;
134 
135 }
136 
137 public void setAge(int age){
138 
139 this.age = age;
140 
141 }
142 
143 public void sleep(){
144 
145 System.out.println("ZZzzz.....");
146 
147 }
148 
149 }
150 
151 class Cat extends dongWu{
152 
153 //无参构造方法
154 
155 public Cat(){}
156 
157 //有参构造方法
158 
159 public Cat(String name,String color,int age)
160 
161 {
162 
163 super.show(name, color, age);
164 
165 }
166 
167 public void play(){
168 
169 System.out.println("猫玩毛球。。。。");
170 
171 }
172 
173 }
174 
175 class Dog extends dongWu{
176 
177 //无参构造方法
178 
179 public Dog(){}
180 
181 //有参构造方法
182 
183 public Dog(String name,String color,int age)
184 
185 {
186 
187 super.show(name, color, age);
188 
189 }
190 
191 public void look(){
192 
193 System.out.println("看门?犯二!");
194 
195 }
196 
197 }
198 
199 class ExtendsText2{
200 
201 public static void main(String[] args){
202 
203 //方法1
204 
205 Cat c1 = new Cat();
206 
207 c1.setName("短尾猫");
208 
209 c1.setColor("虎纹");
210 
211 c1.setAge(1);
212 
213 System.out.println(c1.getName()+" "+c1.getColor()+" "+c1.getAge());
214 
215 c1.play();
216 
217 Dog d1 = new Dog();
218 
219 d1.setName("哈士奇");
220 
221 d1.setColor("白");
222 
223 d1.setAge(1);
224 
225 System.out.println(d1.getName()+" "+d1.getColor()+" "+d1.getAge());
226 
227 d1.look();
228 
229 //方法2
230 
231 Cat c2 = new Cat("短尾猫","虎纹",1);
232 
233 System.out.println(c2.getName()+" "+c2.getColor()+" "+c2.getAge());
234 
235 c2.play();
236 
237 Dog d2 = new Dog("二哈","白",1);
238 
239 System.out.println(d2.getName()+" "+d2.getColor()+" "+d2.getAge());
240 
241 d2.look();
242 
243 }
244 
245 }
posted @ 2016-09-10 09:33  卡拉瓦  阅读(1027)  评论(0编辑  收藏  举报