当前位置: 首页 > news >正文

java复习 02

谢谢伟大的ai给我出卷子,,谢谢,,谢谢大模型,感恩,我像是一只皮革。。。。

1 实现接口必须实现其所有抽象方法,否则类必须声明为抽象类。

2 子类重新实现父类同名方法称为方法重写,需遵循 "两同两小一大" 原则

在 Java 的方法重写(覆盖,Overriding) 中,子类重写父类方法时需要遵循 “两同两小一大” 原则,这是确保重写合法性和多态正确性的关键规则。以下是对该原则的详细解析:

一、两同

1. 方法名相同

子类重写的方法必须与父类被重写的方法完全同名
示例

java

class Parent {public void show() { ... } // 父类方法名是 show
}
class Child extends Parent {public void show() { ... } // 子类方法名必须也是 show
}
2. 参数列表相同

子类方法的参数类型、顺序、数量必须与父类方法完全一致,不能修改参数列表。
示例

java

class Parent {public void print(int num) { ... } // 父类参数是 int
}
class Child extends Parent {public void print(int num) { ... } // 子类参数必须也是 int,不能改为 long 或其他类型
}

二、两小

1. 子类方法的返回值类型小于或等于父类方法的返回值类型
  • 若父类方法返回基本数据类型,子类返回值类型必须与父类完全相同
    示例

    java

    class Parent {public int getNum() { return 1; } // 父类返回 int
    }
    class Child extends Parent {public int getNum() { return 2; } // 子类必须也返回 int,不能改为 long
    }
    
  • 若父类方法返回引用数据类型(如类),子类返回值类型必须是父类返回值类型的子类或相同类型(称为 协变返回类型)。
    示例

    java

    class Animal { ... }
    class Dog extends Animal { ... }class Parent {public Animal getPet() { return new Animal(); } // 父类返回 Animal
    }
    class Child extends Parent {public Dog getPet() { return new Dog(); } // 子类返回 Dog(Animal 的子类),合法
    }
    
2. 子类方法声明抛出的异常类型小于或等于父类方法声明抛出的异常类型
  • 子类方法可以声明抛出父类方法异常的子类不抛出异常,但不能抛出父类方法未声明的更宽泛的异常
    示例

    java

    import java.io.IOException;class Parent {public void work() throws IOException { ... } // 父类抛出 IOException
    }
    class Child extends Parent {public void work() throws FileNotFoundException { ... } // FileNotFoundException 是 IOException 的子类,合法
    }
    
     
    • 若父类方法未声明抛出异常,子类方法不能声明抛出受检异常(但可以抛出非受检异常,如 RuntimeException)。

三、一大

子类方法的访问权限大于或等于父类方法的访问权限
  • 父类方法的访问修饰符决定了子类方法的最低权限要求:
    父类方法修饰符子类方法允许的修饰符示例(父类方法)子类合法修饰符
    private只能在子类中重新定义为 privateprivate void method()必须也是 private
    默认(包访问)可以是 默认protectedpublicvoid method()protectedpublic
    protected可以是 protectedpublicprotected void method()public
    public必须是 publicpublic void method()只能是 public
  • 核心逻辑:子类不能缩小父类方法的访问范围,否则会破坏多态的可用性(例如,父类引用调用子类方法时可能因权限不足无法访问)。

四、违反原则的后果

若不遵循 “两同两小一大” 原则,编译器会报错,提示 “方法未正确覆盖父类方法”。例如:

  • 改方法名 → 变成方法重载,而非重写。
  • 改参数列表 → 变成方法重载,父类方法未被覆盖。
  • 缩小访问权限 → 编译错误(如父类方法是 public,子类改为 protected)。

五、总结图示

plaintext

父类方法:
修饰符 返回值 方法名(参数列表) throws 异常列表 { ... }子类重写要求:
↓        ↓       ↓          ↓              ↓
│        │       │          │              ├─ 异常类型 ≤ 父类异常(两小)
│        │       │          ├─ 参数列表必须相同(两同)
│        │       └─ 方法名必须相同(两同)
│        └─ 返回值类型 ≤ 父类返回值(两小)
└─ 修饰符 ≥ 父类修饰符(一大)

通过遵循该原则,可确保多态机制在运行时正确调度子类方法,避免逻辑错误和编译问题。

3 接口中的方法默认是public abstract(可省略),属性默认是public static final

super可调用父类构造方法、成员方法或属性。 

final修饰的类不可被继承,修饰的方法不可被重写。 

6 一个对象只能属于一个类,但可实现多个接口。

7 构造方法不能被继承,但子类构造默认调用父类无参构造。

8 抽象类可以不含抽象方法,但含抽象方法的类必须声明为抽象类。

9 面向对象三大特征

  • 封装
    将数据(属性)和操作(方法)绑定为一个整体,并隐藏内部细节。
    示例

    java

    public class Person {private String name; // 私有属性,外部不可直接访问public String getName() { return name; } // 公共访问方法
    }
    
  • 继承
    子类继承父类的属性和方法,实现代码复用和扩展。
    示例

    java

    class Animal { void eat() { ... } }
    class Dog extends Animal { void bark() { ... } } // Dog继承eat()方法
    
  • 多态
    同一操作作用于不同对象,产生不同行为。
    示例

    java

    Animal a = new Dog(); // 父类引用指向子类对象
    a.eat(); // 调用Dog重写的eat()方法
    

10 接口与抽象类的区别

维度接口抽象类
结构仅含抽象方法和常量含抽象方法、非抽象方法和变量
继承限制允许多实现(implements)单继承(extends)
成员修饰符方法默认public abstract,属性默认public static final无强制要求
设计目的定义行为规范,实现 "has-a" 关系定义共性,实现 "is-a" 关系

11  方法重载与方法重写的区别

维度方法重载(Overloading)方法重写(Overriding)
范围同一个类中子类与父类间
条件方法名相同,参数列表不同方法名、参数列表、返回类型均相同
机制编译时多态(静态绑定)运行时多态(动态绑定)
访问权限无限制子类权限≥父类权限

相关文章:

  • git stash介绍(贮藏、暂存)(临时保存当前工作目录中尚未提交的修改)
  • 对接系统外部服务组件技术方案
  • 第四章 4.IP Address (CCNA)
  • iptables常用命令
  • Gephi中的Isometric Layout 插件使用应该用什么数据格式
  • Registry和docker有什么关系?
  • MyBatis 一级缓存与二级缓存
  • C++实现图形化2048小游戏
  • 力扣4.寻找两个正序数组的中位数
  • java int 颜色值转换为string 不带透明度
  • JavaScript 核心原理深度解析-不停留于表面的VUE等的使用!
  • LeetCode 152. 乘积最大子数组 - 动态规划解法详解
  • 【CF】Day74——⭐Codeforces Round 885 (Div. 2) ACD (数学场)
  • 2025.6.3学习日记 Nginx 基本概念 配置 指令 文件
  • Nginx配置Ollama 访问api服务
  • 61、ESB详解
  • RTP over TCP 模式
  • Ros2 简单构建项目的流程以及涉及的文件作用
  • 【iOS安全】Macbook更换brew源
  • AI一周事件(2025年5月27日-6月2日)
  • 公安局网站建设方案/市场营销案例分析及解答
  • 龙华民治网站建设公司/百度关键词批量看排名工具
  • 做图书网站赚钱吗/新闻播报最新
  • 陕西省工程建设交易服务中心网站/千锋教育出来好找工作吗
  • wordpress添加小说板块/衡阳seo服务
  • 织梦网站在css中怎样做导航/网站seo网络优化