java继承和多态

2年前 (2022) 程序员胖胖胖虎阿
185 0 0

🍅 Java学习路线配套文章:搬砖工逆袭Java架构师

🍅 基础推荐:Java基础教程系列

🍅 实战推荐:Spring Boot基础教程

🍅 简介:Java领域优质创作者🏆、CSDN哪吒公众号作者✌ 、Java架构师奋斗者💪

🍅 扫描主页左侧二维码,加入群聊,一起学习、一起进步 

🍅 欢迎点赞 👍 收藏 ⭐留言 📝  

目录

一、继承

二、多层次继承

三、多态

1、多态的优点

2、多态存在的三个必要条件

四、重写

五、虚函数

六、子类构造器

七、继承的设计技巧

1、将公共操作和域放在超类

2、不要使用受保护的域

3、使用继承实现“is-a”关系

4、除非所有继承的方法都有意义,否则不要使用继承

5、在覆盖方法时,不要改变预期的行为

6、使用多态,而非类型信息

7、不要过多地使用反射

八、哪吒社区


一、继承

Java用关键字extends表示继承。

关键字 extends 表明正在构造的新类派生于一个已存在的类。已存在的类称为超类(superclass),新类称为子类(subclass)。超类和子类是 Java 程序员最常用的两个术语。在设计类的时候,应该将通用的方法放在超类中, 而将具有特殊用途的方法放在子类中。

二、多层次继承

Animals  -->  Dog  -->  Tady

package com.nezha.javase;

public class Tady extends Dog{
    public Tady(String name, String info) {
        super(name, info);
    }
}

三、多态

多态是同一个行为具有多个不同表现形式或形态的能力。

1、多态的优点

  • 1. 消除类型之间的耦合关系
  • 2. 可替换性
  • 3. 可扩充性
  • 4. 接口性
  • 5. 灵活性
  • 6. 简化性

2、多态存在的三个必要条件

  • 继承
  • 重写
  • 父类引用指向子类对象
Animals dog = new Dog("大黄","汪汪");

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

四、重写

当子类对象调用重写的方法时,调用的是子类的方法,而不是父类中被重写的方法。

要想调用父类中被重写的方法,则必须使用关键字 super。

Animals类

package com.nezha.javase;

public class Animals {
    public void call(){
        System.out.println("动物叫...");
    }
}

Cat子类

package com.nezha.javase;

public class Cat extends Animals{
    @Override
    public void call() {
        System.out.println("喵喵喵...");
    }
}

Dog子类

package com.nezha.javase;

public class Dog extends Animals{
    @Override
    public void call() {
        super.call();
    }

    public static void main(String[] args) {
        Animals dog = new Dog();
        dog.call();//动物叫...
        Animals cat = new Cat();
        cat.call();//喵喵喵...
    }
}

子类可以通过super调用父类的方法。 

五、虚函数

虚函数的存在是为了多态。

Java 中其实没有虚函数的概念,它的普通函数就相当于 C++ 的虚函数,动态绑定是Java的默认行为。如果 Java 中不希望某个函数具有虚函数特性,可以加上 final 关键字变成非虚函数。

六、子类构造器

package com.nezha.javase;

public class Animals {
    private String name;
    private String info;

    public void call(){
        System.out.println("动物叫...");
    }

    public void speak(String name,String info){
        System.out.println(name +" --> " + info);
    }
}

子类构造器可以通过super调用父类的构造器,前提条件一定是父类要有这个构造器。

package com.nezha.javase;

public class Animals {
    private String name;
    private String info;

    public void call(){
        System.out.println("动物叫...");
    }

    public void speak(String name,String info){
        super.speak(name, info);
    }
}

七、继承的设计技巧

1、将公共操作和域放在超类

2、不要使用受保护的域

有些人认为protected是一个很好的选择,然后并不是。

子类集合是无限制的,任何一个人都能由其他基类派生出一个子类,并编写代码以直接访protected的实例域,从而破坏了封装线。

在Java程序设计语言中,在同一包中的所有类都可以访问protected域,而不管它是否为这个类的子类。不过,protected方法对于指示哪些不提供一般用途从而应在子类中重新定义的方法很有用。

3、使用继承实现“is-a”关系

4、除非所有继承的方法都有意义,否则不要使用继承

5、在覆盖方法时,不要改变预期的行为

6、使用多态,而非类型信息

7、不要过多地使用反射

更多用法详见:Java基础教程系列

上一篇:Java零基础入门 10:final和static

下一篇:Java零基础入门 12:Java中的Object类

java继承和多态

添加微信,备注1024,赠送Java学习路线思维导图  

版权声明:程序员胖胖胖虎阿 发表于 2022年11月2日 上午11:56。
转载请注明:java继承和多态 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...