本帖最后由 zw501970830 于 2019-4-1 18:58 编辑
学习第14天,有点懵, 英语不好,上课听不懂~只能自己课下整理笔记让他易懂一些
[Java] 纯文本查看 复制代码 /**
* 多态的应用之1:多态数组
* 元素的类型是父类,元素的对象是子类的对象
*
*
*/
public class Duotai3 {
public static void main(String[] args) {
//用一个数组,管理3个矩形对象和两个圆对象
TuXing[]arr = new TuXing[5];
//元素的类型是父类的类型TuXing
//三个矩形面积
arr[0] = new JuXing(2,3);
arr[1] = new JuXing(1,3);
arr[2] = new JuXing(4,3);
//两个圆形面积
arr[0] = new Yuan(2.3);//圆形的半径
arr[0] = new Yuan(4.3);//圆形的半径
//统一管理子类的对象
for (TuXing tuXing : arr) {
System.out.println(tuXing.getArea());//直接tuXing点方法求面积
//执行的是子类的重写方法,因为元素中存储的是子类的对象
}
}
}
class TuXing{//父类
//此方法为了让子类进行重写,用多态引用调用方法
public double getArea(){
return 0.0;
}
}
class JuXing extends TuXing{//子类JuXing继承父类TuXing
private double chang;//定义矩形的长的属性
private double kuan;//定义矩形宽的属性
//生成有参构造
public JuXing(double chang, double kuan) {
super();
this.chang = chang;
this.kuan = kuan;
}
//生成get和set方法
public double getChang() {
return chang;
}
public void setChang(double chang) {
this.chang = chang;
}
public double getKuan() {
return kuan;
}
public void setKuan(double kuan) {
this.kuan = kuan;
}
//重写方法
public double getArea(){
return chang*kuan;
}
}
class Yuan extends TuXing{//子类Yuan继承父类TuXing
private double banjing;//定义圆的半径属性封装
public Yuan(double banjing) {
super();
this.banjing = banjing;
}
//无参构造器
public Yuan() {
super();
}
//使用快捷键生成get和set方法
public double getBanjing() {
return banjing;
}
public void setBanjing(double banjing) {
this.banjing = banjing;
}
public double getArea(){//方法
return Math.PI*banjing*banjing;//求圆的面积
}
}
总结一点:代码多敲,视频作为辅助看一遍就行,代码敲上三遍,效果非常好 |