java - 声明子类的对象
问题描述
我试图创建子类“smycken”的实例,但它似乎不起作用,因为参数中的“namn”出现错误。
public abstract class Värdesaker {
String namn;
double värde;
double moms = 1.25;
public static void main(String[] args) {
Värdesaker v = new smycken(namn, false, 0);
}
class smycken extends Värdesaker {
double vikt, ädelstenar;
public smycken(String namn, boolean guld, int ädelstenar) {
this.namn = namn;
this.ädelstenar = ädelstenar;
if (guld)
this.värde = (2000 + (ädelstenar * 500)) * moms;
else
this.värde = (500 + (ädelstenar * 500)) * moms;
}
解决方案
我已将您的代码修改如下。它似乎工作。需要以下内容
- 将访问说明符更改为受保护的超类 Värdesaker 的成员变量(或者您可以提供 getter-setter 以访问私有变量)
- 将 smycken 标记为静态
- main 方法不能访问非静态、非公共的成员变量。所以你必须实例化你的参数或像以前一样在构造函数中使用创建。
// 修改类
public abstract class Värdesaker {
protected String namn;
protected double värde;
protected double moms = 1.25;
public static void main(String[] args)
{
Värdesaker v = new smycken("Test", false, 0);
}
static class smycken extends Värdesaker
{
double vikt, ädelstenar;
public smycken(String namn, boolean guld, int ädelstenar)
{
this.namn = namn;
this.ädelstenar = ädelstenar;
if (guld) {
this.värde = (2000 + (ädelstenar * 500)) * moms;
} else {
this.värde = (500 + (ädelstenar * 500)) * moms;
}
}
}
}
推荐阅读
- ios - 如何在条形顶部显示条形值?
- java - 要打印的数组的非相邻元素的最大总和
- java - 如何从 Java 中的超类访问子类?
- postgresql - Concatenate result of a SELECT into an EXECUTE
- date - 在赛普拉斯的日期输入上按 Enter
- c - 如果有的话,在 C 中如何“接近”其他变量存储的规则是什么?
- android - 将单个文本视图拆分为多个页面
- python - 使用 Pandas DataFrame 逐行查找过去 6 个月的事件
- hazelcast - 从应用程序定义地图加载器的正确方法 - hazelcast
- php - 根据请求的来源,从 API 获取具有不同结果的数据时出现问题