2022.01.06多态练习
1.什么是多态性?什么是虚拟方法调用?
①父类的引用指向子类的对象;
②父类引用的对象调用子类中同名的方法时,优先调用的是子类重写的方法。
对象的多态性:父类的引用指向子类的对象。
Person p = new Man();
p.eat();
调用方法时,编译时看左边,运行时看右边。
2.一个类可以有几个直接父类?(一个)
一个父类可有多少个子类?(多个)
子类能获取直接父类的父类中的结构吗?(可以)
子类能否获取父类中private权限的属性或方法?(可以)
3.方法的重写(override/overwrite)的具体规则有哪些?
①不能重写父类中声明为private、final的方法;
②重写方法的参数列表、名称必须和父类相同;
方法名、形参列表相同
权限修饰符
返回值
抛出的异常
4.super调用构造器,有哪些具体的注意点?
super在构造器中必须声明在首行,不能和this同时使用;
this(形参列表):本类重载的其它的构造器
super(形参列表):调用父类中指定的构造器
5.在下面的代码结构中:使用关键字:this,super;方法的重写;继承;
public class Circle { private double radius; public Circle() { } public Circle(double radius) { this.radius = 1; } public double getRadius() { return radius; } public void setRadius(double radius) { this.radius = radius; } public double findArea(double radius) { return Math.PI * radius * radius; } } class Cylinder extends Circle { private double length; public Cylinder() { } public Cylinder(double length) { super(1); this.length = 1; } public double getLength() { return length; } public void setLength(double length) { this.length = length; } public double findVolume(double radius, double length) { return super.findArea(radius) * length; } public double findArea(double radius) { return super.findArea(radius) * 2 + Math.PI * 2 * radius * length; } } class CircleTest { public static void main(String[] args) { Cylinder cyc = new Cylinder(1); System.out.println(cyc.findArea(cyc.getRadius())); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理