Discuss / Java / 不是说要用抽象方法吗?

不是说要用抽象方法吗?

Topic source

作业那个脚本下载下来怎么是有实例化的啊?这还怎么抽象啊?

// Income[] incomes = new Income[] { new Income(3000), 

// public abstract class Income {

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

你再仔细想想

我也想知道为什么?

除了给第一个new Income改成其他类(创建一个新子类)和删掉这个实例想不到其他办法,老师仔细讲讲呗?

我也想知道为什么?这种编译都过了,难道抽象类可以实例化了?

嗯,我大概明白什么意思了,这应该不算是实例化。

// **TODO**: 用抽象类给一个有工资收入和稿费收入的小伙伴算税:

Income[] incomes = **new** Income[] { **new** SalaryIncome(7500), **new** RoyaltyIncome(12000) };

这个代码可以写为

Income[] incomes = { **new** SalaryIncome(7500), **new** RoyaltyIncome(12000) };

应该说,这是定义了一个Income类型的一个数组,至于为什么后面加上new Income[]也不出问题,我还不知道怎么解释。

随风曦457

#7 Created at ... [Delete] [Delete and Lock User]

new Income(3000)  我也想知道,这个是不是老师的笔误。Income已经被定义成抽象类了,是不能被实例化,这里 new Income(3000)  无法理解

The__Wolf

#8 Created at ... [Delete] [Delete and Lock User]

楼上的各位大哥,他这个new Income[]是java里面定义数组的语法啊,怎么和类的实例化混为一谈了?

看这个,int[] array = new int[4],new Income[]表示的是后面大括号里的内容是Income类型的,并不是说实例化了Income类型

接楼上 ,这里应该理解成新建数组,声明了若干个指向于抽象类的引用的空间 。这里面只是存储了一串引用,没有实例化这个动作。

这里用的数组。

Income incomes1 = new SalaryIncome(7000);

Income incomes2 = new RoyaltyIncome(12000);

Income incomes3 = new Income(3000); //报错:不能实例化类型Income


  • 1
  • 2

Reply