Java继承和多态

Java继承与多态的特点及实现

继承和多态

继承

  通过extends关键字来实现。允许一个类(子类)从另一个类(父类)中继承属性和方法,子类重用父类的代码,实现代码的复用和扩展。

主要特点:

  • 代码复用: 子类继承父类的属性和方法,无需重复编写相同的功能。
  • 扩展性: 通过继承,可以为子类添加新的行为或重写父类的行为。

使用场景:

  • 当多个类之间存在共同特征时,可以将这些共同特征抽象到一个父类中,子类继承父类。
  • 当需要多现有类进行扩展时,可使用继承。

举个例子:

  其中,猫类和狗类共同继承动物的方法,也就是具备共同属性和方法,如年龄,身体颜色等;它们也有自己的特征,比如猫的叫声和狗的叫声是不同的,这是它们各自的方法。猫和狗都是动物。

class Animal {
    private int age;
    private String color;
    public void eat() {
        System.out.println("正在吃饭");
    }
}
class Dog extends Animal{
    public void wangWang() {
        System.out.println("汪汪叫");
    }
}
class Cat extends Animal{
    public void miaoMiao() {
        System.out.println("喵喵叫");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        Cat cat = new Cat();

    }
}

多态

  同一个方法调用在不同的对象上可以有不同的实现方式,主要通过向上转型来实现。

主要特点:

  • 统一性: 不同的类可以实现相同的方法,但行为可以不同。
  • 灵活性: 在不改变代码的情况下,增加新代码。

实现方式:

  通过方法重写,可以实现多态,多态通常和继承一起使用。

什么是方法重写呢?

  重写也是覆盖,就是子类重写父类的方法,其中包括方法名,返回值,以及传参。我们通常使用@Override注解表示方法重写。

什么是向上转型?

  也就是通过子类的构造方法来构造父类对象,实现覆盖的效果

代码示例:

class Animal {
    void makeSound() {
        System.out.println("动物在叫");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("狗在叫");
    }
}

class Cat extends Animal {
    @Override
    void makeSound() {
        System.out.println("猫在叫");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog();
        Animal myCat = new Cat();

        myDog.makeSound(); // 输出: 狗在叫
        myCat.makeSound(); // 输出: 猫在叫
    }
}

注意事项:

  • 被final修饰的方法不能被重写,因为它不可被修改;

  • 被static修饰的方法也不能被重写,因为它不属于对象;

  • 多态要求方法必须被重写;
  • 多态主要通过父类引用指向子类对象来实现(也就是向上转型)。

总结

  • 继承:用于代码的复用和扩展,通过extends关键字来实现
  • 多态:同一个方法调用在不同的对象上可以有不同的实现方式。通过方法重写来实现。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值