Person类
package com.ITheima.d7_extends; public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Student类继承Person类
package com.ITheima.d7_extends; public class Student extends Person{ public void study(){ System.out.println(getName()+"好好学习"); } }
Teacher类继承Person类
package com.ITheima.d7_extends; public class Teacher extends Person { public void teach() { System.out.println(getName()+"开始教导学生"); } }
案例
Person1类
package com.ITheima.d8_extends; public class Person1 { private String name; private int age; public void watch(){ System.out.println("查看课表"); } //无参构造器 public Person1() { } //有参构造器 public Person1(String name, int age){ this.name=name; this.age=age; } //set get public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Student1类
package com.ITheima.d8_extends; public class Student1 extends Person1 { private String stayClass; public void write(){ System.out.println("填写听课反馈"); } public String getStayClass() { return stayClass; } public void setStayClass(String stayClass) { this.stayClass = stayClass; } }
Teacher1类
package com.ITheima.d8_extends; public class Teacher1 extends Person1 { private String place; public void sendMsg(){ System.out.println("发布问题"); } public String getPlace() { return place; } public void setPlace(String place) { this.place = place; } }
TestDemo11类
package com.ITheima.d8_extends; import com.ITheima.d7_extends.Teacher; public class TestDemo11 { public static void main(String[] args) { Student1 s=new Student1(); s.setName("TOM");//继承父类 s.setAge(11);//继承父类 s.setStayClass("梅花"); s.write(); Teacher1 t=new Teacher1(); t.setName("Lili");//继承父类 t.setAge(49);//继承父类 t.setPlace("嘎嘎"); t.sendMsg(); } }
方法重写
@Override重写注释
Phone父类
package com.ITheima.d8_extends; public class Phone { public void call(){ System.out.println("开始打电话"); } public void sendMessage(){ System.out.println("发送短信开始"); } }
NewPhone 子类
package com.ITheima.d8_extends; public class NewPhone extends Phone{ /** * 方法重写 * @Override 放在重写后的方法上,作为重写是否正确的校验注解 * 加上该注解后 如果重写错误,编译阶段会出现错误提示 * (建议重写方法都加@Override注解,代码安全 ,优雅!) * 方法重写注意事项和要求 * 1 重写方法的名称,形参列表与被重写的方法是的名称和参数列表一致 * 2 私有方法不能被重写 * 3 这类重写父类方法时 访问权限必须大于或等于父类(暂时了解:缺省<protected<public) * 4 子类不能重写父类的静态方法,如果重写会报错 */ @Override public void call(){ super.call();//调用父类的call方法 System.out.println("支持饰视频通过~~~~"); } /** * 方法重写 */ @Override public void sendMessage(){ super.sendMessage();//调用父类的sendMessage方法 System.out.println("支持图片发送"); } }
Test测试类
package com.ITheima.d8_extends; public class Test { public static void main(String[] args) { NewPhone np=new NewPhone(); np.call(); np.sendMessage(); } }
Animal类
package com.ITheima.d9_extends; public class Animal { public Animal(){ System.out.println("===父类Animal无参构造器被执行==="); } }
Cat类
package com.ITheima.d9_extends; public class Cat extends Animal{ public Cat(){ super();//默认的 ,写不写 都有,默认就是执行父类无参数构造器 System.out.println("===========子类Cat 无参构造执行========="); } public Cat(String name){ System.out.println(name+"======子类有参构造器执行======="); } }
Test类
package com.ITheima.d9_extends; public class Test { public static void main(String[] args) { Cat c=new Cat(); System.out.println("---------------------"); Cat c1=new Cat("波斯猫"); } }
Animal类
package com.ITheima.d9_extends; public class Animal { private String name; private int age; //无参构造器 public Animal() { } //有参构造器 public Animal(String name,int age){ this.name=name; this.age=age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Cat类
package com.ITheima.d9_extends; public class Cat extends Animal{ //子类的私有成员变量 private String className; //无参构造器 public Cat() { } //有参构造器 public Cat(String name,int age,String className){ //一定要访问父类的无参构造器(如果父类没有无参构造器 则需要手动访问父类的有参构造器 执行super(E element)) super(name,age);//默认的 ,写不写 都有,默认就是执行父类无参数构造器 this.className=className; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } }
Test类
package com.ITheima.d9_extends; public class Test { public static void main(String[] args) { Cat c=new Cat("波斯猫",5,"幼儿园"); System.out.println("---------------------"); System.out.println(c.getAge()); System.out.println(c.getName()); System.out.println(c.getClassName()); } }
this super