阿花宝宝 Java基础笔记 之 继承

一,继承
  当某些类有一些共同内容时,可以把这些共同 的内容抽取到父类中。
1.分析出多个类共有的属性和方法
2.将这些共有的抽取出一个父类,创建父类,讲共同的内容抽取到父类,本类只保留特有的内容
3.子类使用extends继承父类

public class 子类名 extends 父类名{

}
super
 调用构造:super(参数);//放在第一行
 调用成员:super.属性  super.方法名();
 在构造方法中,super和this不能同时使用

继承关系中构造方法的调用
无论是否显式的调用父类构造方法 都优先执行父类的无参构造方法
不可继承父类private修饰的属性和方法

转载于:https://www.cnblogs.com/ECS666666/p/5339720.html

<think>好的,用户想了解Java继承基础概念和例子。首先,我需要回顾Java继承的核心知识点,确保内容准确。记得系统级指令要求用中文回答,行内公式用$...$,独立公式用$$...$$,并且生成相关问题。还要注意引用标识,但用户提供的引用是关于快速排序的,可能和Java继承无关,所以可能需要忽略或确认是否有其他引用可用。 首先,Java继承的基本概念包括父类(超类)和子类(派生类),子类继承父类的属性和方法。这里需要解释extends关键字,以及方法重写。接着,要提到访问权限,比如private成员不能被继承,protected和public可以。然后,构造函数的处理,子类如何调用父类构造函数,使用super()。可能还需要覆盖(Override)的概念,以及Object类作为所有类的父类。 接下来是示例部分。应该给出一个简单的父类和子类的代码例子,比如Animal和Dog类,展示继承的基本用法。然后,可以举一个方法重写的例子,说明子类如何修改父类的方法。另外,构造函数的调用示例也很重要,比如在子类构造函数中使用super()。还有多态的例子,比如用父类引用指向子类对象。 要注意代码格式的正确性,使用三个反引号包裹Java代码,并标注语言类型。同时,检查是否有需要数学表达的地方,比如可能涉及到类层次结构或复杂度分析,但Java继承本身可能不需要太多数学公式,不过如果有相关概念,比如类的关系图,可以用LaTeX描述结构,但用户的问题可能更偏向代码和概念,所以可能不需要太多数学公式。 然后生成相关问题,需要考虑用户可能进一步的问题,比如继承的类型(单继承、多继承的问题,Java不支持多继承)、super关键字的作用、方法重写与重载的区别、抽象类与接口在继承中的不同,或者继承的优缺点等。 最后,确保回答结构清晰,分点解释概念,示例代码正确,并且符合用户的要求。同时,检查是否遗漏了重要的点,比如Object类的作用,或者final类不能被继承等细节。可能还需要提醒用户Java是单继承,但可以通过接口实现多重继承的效果。</think># Java继承基础概念与示例 ## 一、核心概念 1. **继承机制**:通过`extends`关键字建立子类与父类关系,子类自动获得父类的非私有成员(属性和方法) $$ \text{子类} \subseteq \text{父类} $$ 2. **访问权限**: - `public`:全局可见 - `protected`:包内及子类可见 - `private`:仅当前类可见[^2] 3. **方法重写**:子类可重新定义父类方法(需保持相同签名) ```java class Parent { void show() { System.out.println("Parent"); } } class Child extends Parent { @Override // 注解确保正确重写 void show() { System.out.println("Child"); } } ``` ## 二、典型示例 ### 基础继承案例 ```java // 父类 class Animal { protected String name; public void eat() { System.out.println(name + "正在进食"); } } // 子类 class Dog extends Animal { public Dog(String name) { this.name = name; // 继承父类属性 } public void bark() { System.out.println(name + "汪汪叫"); } } // 使用示例 public class Main { public static void main(String[] args) { Dog myDog = new Dog("阿黄"); myDog.eat(); // 调用继承方法 myDog.bark(); } } ``` ### 构造函数调用 ```java class Vehicle { private int wheels; Vehicle(int w) { wheels = w; System.out.println("载具初始化,轮子数:" + wheels); } } class Car extends Vehicle { Car() { super(4); // 必须首先调用父类构造器 System.out.println("轿车初始化完成"); } } ``` ## 三、继承特点 1. **单继承原则**:Java类只能直接继承一个父类 2. **继承链**:所有类最终继承自`Object`类 3. **初始化顺序**: - 父类静态代码块 → 子类静态代码块 - 父类实例代码块 → 父类构造器 - 子类实例代码块 → 子类构造器 $$ \begin{cases} \text{父类初始化} \\ \downarrow \\ \text{子类初始化} \end{cases} $$ ## 四、最佳实践 1. 使用`@Override`注解确保正确重写 2. 通过组合+继承实现代码复用 3. 遵循里氏替换原则(LSP):子类应完全实现父类约定[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值