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 }
- 上一篇 »java中向上转型
- 下一篇 »一行代码实现java list去重