zoukankan      html  css  js  c++  java
  • 多态

    方法名相同,但实现的功能不同。重写和重载可以实现类的多态性,如子类重写父类方法。

    例1、方法名相同,参数个数不同,参数类型不同。

            

    public class Calculate {
    final float PI=3.14f;
    public float getArea(float r) {//一个参数
        float area=PI*r*r;//圆面积
        return area;
    }
    public float getArea(float l,float w) {//重载,两个参数
        float area=l*w;//矩形面积
        return area;
    }
    public void draw(int num) {//整型参数
        System.out.println("int:"+num);
    }
    public void draw(String shape) {//重载,字符型参数
        System.out.println("String");
    }
        public static void main(String[] args) {
            Calculate s=new Calculate();
            float l=20;
            float w=30;
            float rectangle=s.getArea(l,w);//自动调用对应的方法
            System.out.println("矩形面积为:"+rectangle);
            float r=7;
            float circle=s.getArea(r);//自动调用对应的方法
            System.out.println("圆的面积为:"+circle);
            int num=7;
            s.draw(num);//自动调用对应的方法
            s.draw("三角形");//自动调用对应的方法
        }
    }

     例2、几何图形都有共同属性(形状名称、面积)(抽象类),具体的长宽、半径等具体属性在具体类中定义。

              抽象类讲解,参考  https://www.ibm.com/developerworks/cn/java/l-javainterface-abstract/index.html

                         

    //抽象类,不能实例化。实例化在具体的类(三角形、矩形)中
    public abstract class Shape {
        public String getName() {
            return this.getClass().getSimpleName();//获取类名,形状
        }
        public abstract double getArea();
    }
    public class Circle extends Shape{
    private double r;
    public Circle(double r) {//圆的半径
        this.r=r;
    }
    public double getArea() {
        return Math.PI*Math.pow(r, 2);//面积公式
    }
    }
    public class Rectangle extends Shape{
        private double l;
        private double w;
        public Rectangle(double l,double w) {//矩形的长宽
            this.l=l;
            this.w=w;
        }
        public double getArea() {//矩形的面积
            return l*w;
        }
    }
    public class Test {
        public static void main(String[] args) {
            Circle c=new Circle(1);//赋值半径
            System.out.println(c.getName());//名称
            System.out.println(c.getArea());//面积
            Rectangle rec=new Rectangle(1,1);//赋值长宽
            System.out.println(rec.getName());//名称
            System.out.println(rec.getArea());//面积
        }
    }
  • 相关阅读:
    校验规则,纯数字。几位有效数字,保留几位小数
    银行卡校验规则(Luhn算法)
    forEach兼容ie8
    node.js
    gulp
    observer
    webpack.config.js 配置
    内存泄漏(Memory Leak)
    cdn
    前端 各种插件的官网
  • 原文地址:https://www.cnblogs.com/xixixing/p/8287120.html
Copyright © 2011-2022 走看看