
Java 第三章第四章 案例教程说明:本教程承接前两章,深入讲解面向对象核心特性与常用类。第三章聚焦继承、多态、抽象类、接口;第四章讲解异常处理、常用类(String、StringBuilder、ArrayList、Math、日期时间)。通过“图形绘制系统”和“学生信息管理系统”实战串联知识点。第一部分:第三章 继承、多态、抽象类与接口一、背景故事:小杨需要设计可复用的图形类小杨的学生成绩管理系统已经稳定运行。现在他需要设计一个图形绘制程序,支持圆形、矩形、三角形等形状,每种形状都能计算面积和周长。他发现不同形状有共性(如颜色、位置),又有差异(面积计算公式不同)。他想用继承复用代码,用多态统一处理,用抽象类定义规范。二、继承(Inheritance)继承是面向对象的三大特性之一,允许子类复用父类的属性和方法。2.1 基本语法// 父类(基类)publicclassAnimal{protectedStringname;// protected 子类可访问publicAnimal(Stringname){this.name=name;}publicvoideat(){System.out.println(name+"正在吃东西");}}// 子类(派生类)publicclassDogextendsAnimal{publicDog(Stringname){super(name);// 调用父类构造方法,必须第一行}// 子类可以添加新方法publicvoidbark(){System.out.println(name+"汪汪叫");}}// 使用Dogdog=newDog("旺财");dog.eat();// 继承的方法dog.bark();// 自己的方法2.2 方法重写(Override)子类可以重写父类的方法,实现自己的逻辑。publicclassCatextendsAnimal{publicCat(Stringname){super(name);}@Override// 注解,编译器检查,推荐加publicvoideat(){System.out.println(name+"优雅地吃鱼");}}· 重写规则:方法名、参数列表必须相同;返回值类型可以是原类型的子类;访问权限不能更严格。· @Override 帮助检查是否成功重写。2.3 super 关键字· super() 调用父类构造方法(必须第一行)。· super.方法名() 调用父类被重写的方法。三、多态(Polymorphism)多态允许使用父类类型的变量引用子类对象,调用方法时执行子类的重写版本。Animala1=newDog("小黑");Animala2=newCat("小白");a1.eat();// 输出: 小黑正在吃东西(Dog未重写eat)a2.eat();// 输出: 小白优雅地吃鱼(Cat重写了eat)多态的条件:有继承关系。子类重写父类方法。父类引用指向子类对象。多态的优势:提高代码扩展性,可编写统一的处理逻辑。publicvoidletEat(Animala){a.eat();// 无论传Dog还是Cat,都会调用实际类型的方法}四、抽象类(Abstract Class)抽象类不能实例化,用于定义模板,包含抽象方法(无实现,子类必须实现)。publicabstractclassShape{protectedStringcolor;publicShape(Stringcolor){this.color=color;}// 抽象方法:没有方法体publicabstractdoublegetArea();publicabstractdoublegetPerimeter();// 普通方法publicvoiddisplayColor(){System.out.println("颜色: "+color);}}publicclassCircleextendsShape{privatedoubleradius;publicCircle(Stringcolor,doubleradius){super(color);this.radius=radius;}@OverridepublicdoublegetArea(){returnMath.PI*radius*radius;}@OverridepublicdoublegetPerimeter(){return2*Math.PI*radius;}}五、接口(Interface)接口是一种完全抽象的规范,定义了一组方法,不提供实现(Java 8后可写默认方法、静态方法)。类可以实现多个接口。publicinterfaceDrawable{voiddraw();// 默认 public abstract}publicinterfaceMoveable{voidmove(intdx,intdy);}// 实现多个接口publicclassRectangleextendsShapeimplementsDrawable,Moveable{privatedoublewidth,height;publicRectangle