多态
方法名相同,但实现的功能不同。重写和重载可以实现类的多态性,如子类重写父类方法。
例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());//面积 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!