黑马程序员技术交流社区
标题:
类和对象的调用问题
[打印本页]
作者:
HM周磊
时间:
2013-3-4 11:55
标题:
类和对象的调用问题
本帖最后由 HM周磊 于 2013-3-7 19:29 编辑
/*
假如我们在开发一个系统时需要对员工进行建模。员工包含3个属性:姓名,工号,工资。经理也是
员工,除了含有员工的属性外,另外还有一个奖金属性。请使用继承的思想设计出员工类和经理类
要求类中提供必要的方法进行属性访问。。。
思想 :
1.员工类 :naem gonghao gongzi
2.经理类 :继承了员工还有一个jiangjin属性。
*/
abstract class ren
{
private String name;
private String gonghao;
private int gongzi;
ren(String name,String gonghao,int gongzi)
{
this.name =name;
this.gonghao =gonghao;
this.gongzi =gongzi;
}
public abstract void gongzuo();
}
class yuangong extends ren
{
yuangong(String name,String gonghao,int gongzi)
{
super(name,gonghao,gongzi);
}
public void gongzuo()
{
System.out.println("一般工作");
}
}
class jinli extends ren
{
private double jiangji;
jinli(String name,String gonghao,int gongzi)
{
super(name,gonghao,gongzi);
this.jiangji = jiangji;
}
public void gongzuo()
{
System.out.println("管理工作");
}
}
class LianXi6
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
请问我想调用员工类和经理类中的工作方法,在主函数中要怎么写???:'(
我写了new yuangong.gongzuo();为什么会报错???
作者:
张子凯
时间:
2013-3-4 12:03
本帖最后由 张子凯 于 2013-3-4 12:07 编辑
你的写法有问题,没有传进参数,其实是因为没找到相应构造函数。
可以用以下代码:
class LianXi6
{
public static void main(String[] args)
{
new yuangong("zhang","S8",9000);
}
}
作者:
陈圳
时间:
2013-3-4 12:04
package Day22;
abstract class ren
{
private String name;
private String gonghao;
private int gongzi;
ren(){};//增加一个空参数的构造函数...
ren(String name,String gonghao,int gongzi)
{
this.name =name;
this.gonghao =gonghao;
this.gongzi =gongzi;
}
public abstract void gongzuo();
}
class yuangong extends ren
{
yuangong(String name,String gonghao,int gongzi)
{
super(name,gonghao,gongzi);
}
yuangong(){}//增加一个空参数的构造函数...
public void gongzuo()
{
System.out.println("一般工作");
}
}
class jinli extends ren
{
private double jiangji;
jinli(String name,String gonghao,int gongzi)
{
super(name,gonghao,gongzi);
this.jiangji = jiangji;
}
jinli(){}//方便创建对象...
public void gongzuo()
{
System.out.println("管理工作");
}
}
class Test5
{
public static void main(String[] args)
{
new yuangong().gongzuo();
new jinli().gongzuo();//空参数的构造函数的调用方法
new yuangong("张三","1002",2500).gongzuo();//带参数的构造方法调用....
new jinli("李四","1001",4000).gongzuo();
}
}
作者:
何仕映
时间:
2013-3-4 12:06
因为gongzuo()方法不是静态,必须要
通过对象去调用
。你在调用的时候应该是
new yuangong().gongzuo();
有什么不明白的我们共同探讨哈,我的QQ是:934755780.
作者:
寇弘禄
时间:
2013-3-4 12:42
new yuangong("xx","01",2000) 你的员工的构造函数构造函数需要传入参数,如果想创建对象时不传入参数 需要再定义一个无参的构造函数。
还有你的jinli类中的构造函数没有传入jiangjin这个参数,而在构造函数里用到了这个参数,所以也会报错。
jinli(String name,String gonghao,int gongzi,
int jiangjin
)
{
super(name,gonghao,gongzi);
this.jiangji = jiangji;
}
作者:
花伟昌
时间:
2013-3-4 13:09
本帖最后由 花伟昌 于 2013-3-4 13:11 编辑
abstract class ren
{
private String name;
private String gonghao;
private int gongzi;
ren() --------------------------------------------------------------->添加一个无参的构造函数!
{
}
ren(String name,String gonghao,int gongzi)
{
this.name =name;
this.gonghao =gonghao;
this.gongzi =gongzi;
}
public abstract void gongzuo();
}
class yuangong extends ren
{
yuangong() --------------------------------------------------------------->也添加一个无参的构造函数!
{
}
yuangong(String name,String gonghao,int gongzi)
{
super(name,gonghao,gongzi);
}
public void gongzuo()
{
System.out.println("一般工作");
}
}
class jinli extends ren
{
private double jiangji;
jinli(String name,String gonghao,int gongzi)
{
super(name,gonghao,gongzi);
this.jiangji = jiangji;
}
public void gongzuo()
{
System.out.println("管理工作");
}
}
class LianXi6
{
public static void main(String[] args)
{
new yuangong().gongzuo();//在上面代码中添加无参的构造函数,就能够调用了
new yuangong("...","...",...).gongzuo();//另一种方法:不在代码中添加无参数的构造函数,在此传入构造函数的参数,也可以调用。
}
}
作者:
HM周磊
时间:
2013-3-4 16:46
花伟昌 发表于 2013-3-4 13:09
abstract class ren
{
private String name;
谢谢,写得非常详细,对我帮助很大!!!!:victory:
作者:
文密
时间:
2013-3-4 21:09
abstract class Ren
{
private String name;
private String gonghao;
private int gongzi;
Ren(String name,String gonghao,int gongzi)
{
this.name =name;
this.gonghao =gonghao;
this.gongzi =gongzi;
}
public abstract void gongzuo();
}
class Yuangong extends ren
{
Yuangong(String name,String gonghao,int gongzi)
{
super(name,gonghao,gongzi);
}
public void gongzuo()
{
System.out.println("一般工作");
}
}
class JinLi extends ren
{
private double jiangji;
JinLi(String name,String gonghao,int gongzi,double jiangji)
{
super(name,gonghao,gongzi);
this.jiangji = jiangji;
}
public void gongzuo()
{
System.out.println("管理工作");
}
}
class LianXi6
{
public static void main(String[] args)
{
Yuangong yuan=new Yuangong("张三","开发0002",8000);
yuan.gongzuo();
JinLi jinli=new JinLi("张三","开发0002",80000,);
jinli.gongzuo();
}
}
还是希望你的输写方法主意点啊
类名:首字要大写
变量名:第二字母首字母也需要 大字
希望养成好的编程习惯
作者:
amen0205
时间:
2013-3-5 00:18
你new yuangong.gongzuo();的写法是错误的, 1 创建对象应该是new yuangong(); 2 你yuangong的构造函数有参数的 所以应该是 new yuangong("lili","888",5000);这样才行。 3 调用方法 new yuangong("lili","888",5000).gongzuo(); OK了。 4 书写习惯一定要注意 类名首字符要大些 函数名和变量名第二个字母开始首字母大写。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2