专业的JAVA编程教程与资源

网站首页 > java教程 正文

第23天|Java入门有野,面向对象之多态

temp10 2024-09-27 22:55:08 java教程 10 ℃ 0 评论

多态,就是多种状态的意思。在面向对象语言中,接口的多种不同的实现方式为多态,一个方法(名)多种实现,也是多态。多态可消除类型之间的耦合关系,拥有可替换性、 可扩充性、灵活性和简化代码的优点。

23.1 接口多态

在Java中,接口多态有三个必要条件:继承、重写和基类引用指向派生类对象(引用还是指向基类),接口多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。实现或改变父类方法的实现,在Java中叫作重写

第23天|Java入门有野,面向对象之多态

一个用于绘制图形的接口,提供一个绘制的方法,调用这个方法调,可以画圆,可以画方块,还可以画线条等。

public interface Shape {
    void draw();
}

实现Shape绘制图形接口,实现画个圆。

//实现Shape接口,画个圆
public class Circle implements Shape {
    public void draw() {
        System.out.println("画个圆.");
    }
}

实现Shape绘制图形接口,实现画个方块。

//实现Shape接口,画个方块
public class Square implements Shape {
    public void draw() {
        System.out.println("画个方.");
    }
}

在调用的地方,面向的是接口Shape。如果想实现画圆,就用Circle,想实现画方块,就用Square。改变Circle和Square的实现细节,调用的地方,不需要改变,这就是松耦合的表现.

/*
 * Java多态讲解
 */
public class Main {
    public static void main(String[] args) {
        Shape shape = new Circle();
        //画个圆
        shape.draw();
        shape = new Square();
        //画个方块
        shape.draw();
    }
}

输出结果

画个圆.
画个方.

23.2 方法多态

方法多态,在一个类里面,方法名字相同,而参数不同,返回类型可以相同也可以不同。专业名称叫作重载(overloading)。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

/*
 * Java多态讲解
 */
public class MathUtil {
    public void add(int a, int b) {
        System.out.println("两个整数之和为:" + (a + b));
    }

    public void add(double a, double b) {
        System.out.println("两个浮点数之和:" + (a + b));
    }

    public void add(int a, double b) {
        System.out.println("一个整数和一个浮点数之和:" + (a + b));
    }

    public static void main(String[] args) {
        MathUtil math = new MathUtil();
        math.add(10, 10);
        math.add(10.25, 20.51);
        math.add(10, 20.51);
    }
}

输出结果

两个整数之和为:20

两个浮点数之和:30.76

一个整数和一个浮点数之和:30.51

发现没,一样是调用add方法,结果却是不一样的,这就是多态的优点。如果我提供这些教程,你却还不好好学的话,那不是多态,那叫变态。

好了,有关Java多态内容就这么多了,如果你觉得老陈这样讲还可以的话,你就转发和点赞,你的轻轻一点,就是对老陈继续创作的最大鼓励和支持。

一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,可关注今日头条:老陈说编程。我在分享Python,前端、Java和App方面的干货。关注我,没错的。

#Java##APP##程序员##Web##Spring#

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表