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())); } }