java多态的个人理解及运用

多态

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

通俗一点讲多态是同一种操作在不同环境条件下多种不同的体现,比如在网页上你按F5是刷新,在vscode上你按F5可以编译运行程序。

多态的优点:

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

重写是java实现多态的一种重要形式,子类在继承父类时,有时所需要的一个方法与父类中的差不多但是又不完全一样,这时我们就可重写继承下来的方法。

public class shape {
    private double side;
    shape(double side){
        this.side=side;
    }

    public double getArea(){
        return 0;
    }

    public double getSide() {
        return side;
    }

    public void setSide(double side) {
        this.side = side;
    }
}

class Circle extends shape{
    private double radius;
    Circle(double radius){
        super(radius);
        this.radius=radius;
    }
    void setRadius(double radius){
        this.radius=radius;
    }

    public double getRadius() {
        return radius;
    }

    @Override//重写
    public double getArea(){
        return Math.PI*radius*radius;
    }
}

class Rectangle extends shape{
    private double width;
    private double height;
    Rectangle(double width,double height){
        super(width);
        this.width=width;
        this.height=height;
    }

    public double getWidth() {
        return width;
    }

    public void setWidth(double width) {
        this.width = width;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    @Override//重写
    public double getArea() {
        return width*height;
    }
}

对象类型的转换也是多态的重要表达形式,向上可以自动转换类型,由子类转换成父类,向下可以由父类转换成子类。

public class Demo{
    public static void main(String[] args) {
        Shape a= new Circle();//向上转型,由子类转化为父类
        a.myShape();
        Shape b =new Circle();
        System.out.println(b.x);
        Circle c = (Circle)b;//向下转型,将父类强制转化成子类
        c.test();
    }
}

class Shape{
    public String x="hello java";
    void myShape(){
        System.out.println("I have no shape");
    }
}

class Circle extends Shape{
    void myShape(){
        System.out.println("I'm a Circle");
    }

    void test(){
        System.out.println("Hello World!");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值