class Class1 { private int y; private void show() { system.out.println("show method is private"); } public void usesecret() { show(); } } public class ClassDemo { public static void main(String args[]) { ClassDemo1 Ob = new ClassDemo1(); System.out.println(Ob.y); Ob.show(); Ob.usesecret(); } } 指出错误的原因。
时间: 2024-02-24 12:56:35 浏览: 102
这段代码存在以下错误:
1. 类名不一致。类 `Class1` 和类 `ClassDemo1` 的名称不同。
2. `y` 和 `show()` 方法都是私有的,不能从类的外部访问。在 `ClassDemo` 类的 `main` 方法中,不能直接访问 `Ob.y` 和 `Ob.show()`。
3. 在 `ClassDemo` 类的 `main` 方法中,应该使用 `Class1` 类的对象来调用 `usesecret()` 方法,而不是 `ClassDemo1`。
正确的代码如下:
```
class Class1 {
private int y;
private void show() {
System.out.println("show method is private");
}
public void usesecret() {
show();
}
}
public class ClassDemo {
public static void main(String args[]) {
Class1 Ob = new Class1();
System.out.println(Ob.y); //错误,不能访问私有变量
//Ob.show(); //错误,不能访问私有方法
Ob.usesecret();
}
}
```
相关问题
package money; import java.util.Scanner; public class Money { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int fen = in.nextInt(); Moneys x = new Moneys(fen); x.conversion(); x.show(); in.close(); } } class Moneys{ private int fen; private int jiao; private int yuan; public void conversion(){ this.fen = fen%10; this.jiao = fen/10%10; this.yuan = fen/100; } public void show() { System.out.println(yuan+"yuan"+jiao+"jiao"+fen+"fen"); } public Moneys(int fen) { this.fen = fen; } public Moneys(int yuan,int jiao,int fen) { this.fen = fen; this.jiao = jiao; this.yuan = yuan; } }
这是一个 Java 程序,用于将以分为单位的金额转换为元、角、分表示。程序的输入为一个整数,表示以分为单位的金额,输出为该金额对应的元、角、分表示。
程序中定义了一个 Moneys 类,包含了 conversion() 和 show() 两个方法。conversion() 方法用于将以分为单位的金额转换为元、角、分表示,而 show() 方法用于输出转换后的结果。其中,fen、jiao 和 yuan 分别表示分、角和元的数量。
程序的主函数 Money 中,先使用 Scanner 类读取用户输入的金额,然后实例化一个 Moneys 对象 x,将读取到的金额传入对象的构造函数中进行初始化。接着,调用对象的 conversion() 和 show() 方法,将转换后的结果输出到控制台。最后关闭 Scanner 对象。
编写一个员工类employee,包含name\sex\deptid\salary,分别为姓名、性别、部门编号、薪水。其中薪水为私有属性(即需要设计对应的get\set方法),包含一个方法为show()用于显示属性值。包含二个构造方法:一个不带参数,直接输出“this is in employee gouzao method.”。第二个带二个参数,为name和salary进行赋值。 编写一个管理员类manager,继承员工类employee。包含属性deptmanager(管理的部门)、和show()方法,其中show()方法重写父类的show方法,并在方法中先执行父类的方法体,再显示detmanager值。编写一个带5个参数的构造方法,在此构造方法内为name,sex,deptid,salary和deptmanager进行赋值。 创建测试类test,完成manager对象的创建,并调用show方法。 注:其中在manager中,需要使用Super对父类的构造方法进行调用,并通过super.sex和super.deptid进行赋值。在show方法中需要使用super.show调用父类的show再添加显示deptmanager值。
以下是代码实现:
```java
class Employee {
private String name;
private String sex;
private int deptid;
private double salary;
public Employee() {
System.out.println("this is in employee gouzao method.");
}
public Employee(String name, double salary) {
this.name = name;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getDeptid() {
return deptid;
}
public void setDeptid(int deptid) {
this.deptid = deptid;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public void show() {
System.out.println("name=" + name + ", sex=" + sex + ", deptid=" + deptid + ", salary=" + salary);
}
}
class Manager extends Employee {
private String deptmanager;
public Manager(String name, String sex, int deptid, double salary, String deptmanager) {
super(name, salary);
super.setSex(sex);
super.setDeptid(deptid);
this.deptmanager = deptmanager;
}
public String getDeptmanager() {
return deptmanager;
}
public void setDeptmanager(String deptmanager) {
this.deptmanager = deptmanager;
}
@Override
public void show() {
super.show();
System.out.println("deptmanager=" + deptmanager);
}
}
public class Test {
public static void main(String[] args) {
Manager manager = new Manager("张三", "男", 1, 10000, "财务部");
manager.show();
}
}
```
输出结果为:
```
name=张三, sex=男, deptid=1, salary=10000.0
deptmanager=财务部
```
阅读全文