【JAVA学习之路 | 基础篇】方法的重写(Override)

简介: 【JAVA学习之路 | 基础篇】方法的重写(Override)

1.需求

  • 子类在继承父类后,就获取了父类的所有属性和方法,但有时候父类的方法可能并不适用于子类,换而言之,子类需要对父类的方法进行覆盖,覆写的操作.

2.规则

  1. 方法声明的格式 : 权限修饰符 返回值类型 方法名(参数列表).
  2. 父类被重写的方法的方法名和形参列表必须相同.(方法名和形参列表是方法的签名,而权限修饰符和返回值类型并不是)
  3. 子类重写的方法的权限修饰符不小于父类被重写方法的权限修饰符.(如果父类被重写方法的权限修饰符是public,那么子类重写方法的权限修饰符必须是public).(子类不能重写父类中声明为private的私有方法,因为继承性不能破坏其封装性).
  4. 如果父类被重写方法的返回值类型是void,那么子类重写父类的方法的返回值类型必须是void.
  5. 如果父类被重写方法的返回值类型是基本数据类型(如int,double),那么子类重写父类方法的方法名必须是相同的基本数据类型.
  6. 如果父类被重写方法的返回值类型是引用数据类型(如类),那么子类重写父类方法的返回值类型可以与父类该方法的返回值类型相同,也可以是其返回值类型的子类.
  7. 只有普通的方法调用可以是多态的。成员变量和静态方法不具有多态性,即不能重写

3.(注意)

  • 父类的方法才会被重写,而父类的属性并不会,即并不会被子类的同名属性覆盖.
public class GeometricObjectText {
    public static void main(String[] args) {
        GeometricObjectText g = new GeometricObjectText();
        Circle c = new Circle(1, "黑色", 1);
        MyRectangle m = new MyRectangle("绿色", 1, 2, 1);
        System.out.println(g.equalsArea(c, m));
        g.displayGeometricObject(c);
        g.displayGeometricObject(m);
    }
输出结果 :
false
面积是3.141592653589793
黑色
面积是2.0
绿色
 
 
    public boolean equalsArea(GeometricObject c, GeometricObject m) {
        if (c.findArea() == m.findArea()) {
            return true;
        } else {
            return false;
        }
    }
    public void displayGeometricObject(GeometricObject g) {
        System.out.println("面积是" + g.findArea());
        System.out.println(g.getColor());
    }
}
 
public class GeometricObject {
    private String color;
    private double weight;
    public GeometricObject() {
 
    }
    public GeometricObject(String color, double weight) {
        this.color = color;
        this.weight = weight;
    }
 
    public String getColor() {
        return color;
    }
 
    public void setColor(String color) {
        this.color = color;
    }
 
    public double getWeight() {
        return weight;
    }
 
    public void setWeight(double weight) {
        this.weight = weight;
    }
    public double findArea() {
        return 1.0;
    }
}
 
public class Circle extends GeometricObject {
    private double radius;
    public Circle(double radius, String color, double weight) {
        super(color, weight);
        this.radius = radius;
    }
 
    public double getRadius() {
        return radius;
    }
 
    public void setRadius(double radius) {
        this.radius = radius;
    }
    //方法的重写
    public double findArea() {
        return (Math.PI) * radius * radius;
    }
}
 
public class MyRectangle extends GeometricObject {
    private double width;
    private double height;
 
    public MyRectangle(String color, double weight, double width, double height) {
        super(color, weight);
        this.width = width;
        this.height = height;
    }
 
    public double getWidth() {
        return width;
    }
 
    public void setWidth(double width) {
        this.width = width;
    }
 
    public double getHeight() {
        return height;
    }
 
    public void setHeight(double height) {
        this.height = height;
    }
    //方法的重写
    public double findArea() {
        return (width) * height;
    }
}
相关文章
|
3天前
|
NoSQL Java Redis
如何在 Java 中操作这些 Redis 数据结构的基本方法
如何在 Java 中操作这些 Redis 数据结构的基本方法
9 2
|
3天前
|
安全 Java 程序员
【程序猿逆袭指南】Java高手的秘密武器:throws关键字,让你的方法签名霸气侧漏!
【6月更文挑战第19天】`throws`关键字是Java异常处理的关键,用于方法签名中声明可能抛出的异常,提示调用者处理。它增进代码可读性和安全性,避免运行时崩溃。通过`throws`声明多个异常,能精细规划错误处理。掌握其使用,能提升代码质量和程序员的专业形象,是Java编程中的必备技能。
|
3天前
|
安全 Java 开发者
【技术咖必看】Java异常处理新境界:throws关键字,打造万无一失的方法签名!
【6月更文挑战第19天】在Java异常处理中,`throws`关键字用于方法签名,声明可能抛出的异常,提示调用者必须处理。它区分运行时异常和检查型异常,常用于声明需要调用者捕获的检查型异常。例如,`readFile`方法`throws IOException`,强制调用者通过try-catch或同样`throws`。多异常声明允许一次声明多个可能的异常类型,增强代码健壮性。理解并善用`throws`能构建更稳定、可读的代码。
|
5天前
|
Java 编译器
在 Java 中,重写(Override)和重载(Overload)是两种不同的概念,用于实现多态性。它们有着不同的作用和使用场景。
在 Java 中,重写(Override)和重载(Overload)是两种不同的概念,用于实现多态性。它们有着不同的作用和使用场景。
|
1天前
|
Java 对象存储
字节码学习之常见java语句的底层原理
字节码学习之常见java语句的底层原理
11 0
|
2天前
|
Java 程序员
java截取字符串的几种方法
java截取字符串的几种方法
|
2天前
|
安全 Java
JAVA反射调用方法
JAVA反射调用方法
|
3天前
|
Java 开发者
线程的诞生之路:Java多线程创建方法的抉择与智慧
【6月更文挑战第19天】Java多线程编程中,开发者可选择继承Thread类或实现Runnable接口。继承Thread直接但受限于单继承,适合简单场景;实现Runnable更灵活,支持代码复用,适用于如银行转账这类需多线程处理的复杂任务。在资源管理和任务执行控制上,Runnable接口通常更优。
|
4天前
|
Java 大数据 API
|
1月前
|
Java
【Java开发指南 | 第二十五篇】Java 重写(Override)与重载(Overload)
【Java开发指南 | 第二十五篇】Java 重写(Override)与重载(Overload)
19 1