java继承类中的构造方法给出错误

时间:2015-02-27 04:25:04

标签: java

我知道构造函数不是继承的,

error Name has private access in MyClass
error imcompatible types  unexpected return value 

我应该如何设置扩展类

import java.util.*; 
import java.lang.String;
import static java.lang.System.out;

public class MainClass {    
  public static void main(String[]  args ){

       YourClass xclass = new YourClass ("Sam");
       System.out.println(xclass.getName());
   }
} 

class MyClass {

private String name;

public MyClass(String fn){
       name = fn; }   

 public String getName (){
      return name;} 
}
class YourClass extends MyClass{

   public YourClass(String fn ){
    return name = fn;  }  
 }

1 个答案:

答案 0 :(得分:1)

您需要进行以下修改:

  1. 您应该将name中值MyClass的访问修饰符从private更改为protected。这是因为private成员只能在同一个班级中进行访问,因此YourClass无法访问name中的变量MyClass

  2. 您应该在super(fn);的构造函数中添加YourClass。这是因为如果你没有显式调用超类的构造函数,编译器将默认插入代码段super(),它会调用无参构造函数,但是这个构造函数在你的代码中不存在,所以它不会编译。

  3. 您应该从return name = fn;的构造函数中删除YourClass。这是因为构造函数不应返回任何内容。


  4. 所以你应该有以下内容:

    class MyClass {
    
        protected String name;
    
        public MyClass(String fn) {
            name = fn;
        }
    
        public String getName() {
            return name;
        }
    }
    
    class YourClass extends MyClass {
    
        public YourClass(String fn) {
            super(fn);
        }
    }