类的继承

递归

递归:
1.方法调用自己本身
2.设置递归的退出条件(使用递归时一定要有出口)
example
实现斐波拉契数列(到100的和)。

package com.yw.oop0606;

/**
 * @author YAN
 * @date 2026/6/6 19:07
 * @description
 */
public class digui
{
        //递归方法:实现斐波那契数列
        public static int f(int n){
            //递归出口
            if(n == 1 || n == 2){
                return 1;
            }
            //f(n)=f(n-1)+f(n-2)
            return f(n-1)+f(n-2);
        }

        public static void main(String[] args) {
            //输出前100项
            for(int i=1;i<=100;i++){
                System.out.print(f(i)+" ");
            }
        }
}
类的继承
继承基础知识

继承的格式

public class 子类(派生类) extends 父类(基类,超类) implements 接口,接口,,,{}

注:先写继承再写接口(关于接口的内容见Java学习进程2)
继承后的作用:(同包下)子类会继承父类中所有的非private的属性和方法,但私有属性和方法不能直接调用。
继承的特点:
1.Java中每个类都会默认继承 Object。
2.方法:
(1)定义set方法,设置属性;
(2)定义get方法,获取属性。
3.Java 是单继承语言,一个子类只能直接继承一个父类。
如... extends A,B是错误的
4.可继承权限如下:(权限从高到低)
修饰符 本类 同包类 子类 任意类
public ✅ ✅ ✅ ✅
protected ✅ ✅ ✅ ❌
默认(不写) ✅ ✅ ❌ ❌
private ✅ ❌ ❌ ❌
5. 构造方法不能被继承
6.子类创建对象时,优先执行父类构造方法(super访问父类方法)

方法重写(Override)

作用:当前父类中的方法不能满足当前子类的需求
条件:

  • 有继承关系的两个类之间
  • 访问修饰符大于等于父类,返回值类型,方法名,参数类型(个数,顺序)完全一样
    example
// 父类 Student
public class Student {
    private String name;

    protected void setName(String n) {
        name = n;
    }

    public String getName() {
        return name;
    }
    public void printName() {
        System.out.println("名字:" + name);
    }

    public void study() {
        System.out.println(name + "正在学习!");
    }
}
// 子类 UNStudent 继承 Student
public class UNStudent extends Student {
    @Override
    public void printName() {
        // 保留父类原有功能
        super.printName();
        
        // 子类新增功能
        System.out.println("这是子类重写后的名字输出!");
    }

    @Override
    public void study() {
        // 保留父类中原有的功能,调用父类方法
       //super 表示当前类的父类对象
        super.study();
        
        // 子类新增功能
        System.out.println("大学生还在自学编程!");
    }
}
super关键字
  1. 属性:访问父类成员变量
  2. super.方法():调用父类成员方法,即保留父类原有功能
  3. super():调用父类构造方法,必须放在子类构造第一行
  4. 在子类的调用方法中一定要调用一次父类的构造方法(子类默认调用父类的构造方法)
final和static
  1. static 静态变量(类变量)不需要通过对象访问
  2. final:类不能被继承(绝育类) 方法不能被重写
关于转型

1.自动转型(向上转型)
父类 对象变量名 = new 子类()
继承后子类可以是父类类型
自动转型问题:转型后只能调用子类中的方法

2.强制转型(向下转型)
要求:该对象先进行了自动转型
父类不能强制转为子类

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐