1 public class TestService { 2 private String name; 3 public TestService(String name) 4 { 5 this.name=name; 6 } 7 public void setname(String name) 8 { 9 this.name=name; 10 } 11 public String name() 12 { 13 return name; 14 } 15 public static void main(String args[]) 16 { 17 TestService a=new TestService("zzw"); 18 System.out.println(a.name); 19 } 20 21 22 }
1 public class ExtendsService extends TestService{ 2 public ExtendsService() 3 { 4 super("doc"); 5 } 6 /*private String a; 7 public ExtendsService(String a) 8 { 9 super(a); 10 this.a=a; 11 }*/ 12 public static void main(String args[]){ 13 ExtendsService ext=new ExtendsService(); 14 System.out.println(ext.name()); 15 } 16 17 } 18 //在父子关系,父类中如果是private的时候是需要get set访问的。 19 //super的用法
如果是private的时候需要用访问器的方式进行访问
super("鸟") 直接继承了父类中的带参数的构造方法,同时把值“鸟”传了进去
备注:
1 class A{ 2 public A(){} // 1:无参数构造方法。 3 public A(String s){} // 2. 4 } 5 6 class B extends A{ 7 public B(String s){ 8 super(s); // 3. 9 } 10 } 11 12 说明:如果没有1处的无参数构造方法,那么3处一定要主动调用父类带参数的构造方法。 13 如果有1处的构造方法,那么3处代码可以不要,因为Java会自动默认调用父类的无参数构造方法。 14 15 记住一点:在构造子类时,一定会调用到父类的构造方法。 16 所以父类要么有一个默认的无参数构造,这样Java会自动调用这个无参数的构造。如果父类没有 17 无参数的构造,那么就要你自己在子类的构造中,通过super()的方式调用父类的构造。