-
方法的重写(override/overriding):重新写、覆盖
-
发生在父子类中,方法名相同,参数列表相同
-
重写方法被调用时,看对象的类型---------------new谁就调谁的,这是规定
class 餐馆{ void 做餐(){ 做中餐 } } //1)我还是想做中餐----------------------不需要重写 class Aoo extends 餐馆{ } //2)我想改做西餐------------------------需要重写 class Boo extends 餐馆{ void 做餐(){ 做西餐 } } //3)我想在中餐基础之上加入西餐------------需要重写(先super中餐,再加入西餐) class Coo extends 餐馆{ void 做餐(){ super.做餐(); 做西餐 } }
public class Person { String name; int age; String address; Person(String name,int age,String address){ this.name = name; this.age = age; this.address = address; } void eat(){ System.out.println(name+"正在吃饭..."); } void sleep(){ System.out.println(name+"正在睡觉..."); } void sayHi(){ System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address); } } public class Student extends Person{ String className; String stuId; Student(String name,int age,String address,String className,String stuId){ super(name,age,address); //传递的是name/age/address的值 this.className = className; this.stuId = stuId; } void study(){ System.out.println(name+"正在学习..."); } void sayHi(){ System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address+",所在班级为:"+className+",学号为:"+stuId); } } public class Teacher extends Person{ double salary; Teacher(String name,int age,String address,double salary){ super(name,age,address); this.salary = salary; } void teach(){ System.out.println(name+"正在讲课..."); } void sayHi(){ System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address+",工资为:"+salary); } } public class Doctor extends Person { String title; Doctor(String name,int age,String address,String title){ super(name,age,address); this.title = title; } void cut(){ System.out.println(name+"正在做手术..."); } } public class ExtendsTest { public static void main(String[] args) { Student zs = new Student("张三",25,"廊坊","jsd2302","001"); zs.eat(); zs.sleep(); zs.sayHi(); zs.study(); Teacher ls = new Teacher("李四",35,"佳木斯",6000.0); ls.eat(); ls.sleep(); ls.sayHi(); ls.teach(); Doctor ww = new Doctor("王五",46,"山东","主任医师"); ww.eat(); ww.sleep(); ww.sayHi(); ww.cut(); } }
-
-
综合练习:
public class Animal { String name; int age; String color; Animal(String name,int age,String color){ this.name = name; this.age = age; this.color = color; } void drink(){ System.out.println(color+"色的"+age+"岁的"+name+"正在喝水..."); } void eat(){ //---------------明天继续改造 System.out.println(color+"色的"+age+"岁的"+name+"正在吃饭..."); } } public class Dog extends Animal { Dog(String name,int age,String color){ super(name,age,color); } void lookHome(){ System.out.println(color+"色的"+age+"岁的狗狗"+name+"正在看家..."); } void eat(){ System.out.println(color+"色的"+age+"岁的狗狗"+name+"正在吃肯头..."); } } public class Chick extends Animal { Chick(String name,int age,String color){ super(name,age,color); } void layEggs(){ System.out.println(color+"色的"+age+"岁的小鸡"+name+"正在下蛋..."); } void eat(){ System.out.println(color+"色的"+age+"岁的小鸡"+name+"正在吃小米..."); } } public class Fish extends Animal { Fish(String name,int age,String color){ super(name,age,color); } void eat(){ System.out.println(color+"色的"+age+"岁的小鱼"+name+"正在吃小虾..."); } } public class Test { public static void main(String[] args) { Dog dog1 = new Dog("小黑",2,"黑"); dog1.eat(); dog1.drink(); dog1.lookHome(); Dog dog2 = new Dog("小白",1,"白"); dog2.eat(); dog2.drink(); dog2.lookHome(); Dog dog3 = new Dog("小强",2,"黑白"); dog3.eat(); dog3.drink(); dog3.lookHome(); Chick chick = new Chick("花花",1,"棕"); chick.eat(); chick.drink(); chick.layEggs(); Fish fish = new Fish("金金",2,"金"); fish.eat(); fish.drink(); } }