java继承之方法

方法和变量的语法都大同小异,子类可以通过super关键字调用父类不是private方法。子类同样不能调用父类的private方法,看代码:

父类

public class ParentClass { private String privateVariable = "private Variable"; protected String protectedVariable = "protected Variable"; String defaultVariable = "default Variable"; public String publicVariable = "public Variable"; private static String privateStaticVariable = "private Static Variable"; protected static String protectedStaticVariable = "protected Static Variable"; static String defaultStaticVariable = "dafault Static Variable"; public static String publicStaticVariable = "publicStatic Variable"; public ParentClass() { System.out.println("default parent class"); } public ParentClass(String str) { System.out.println("parent class " + str); } private void privateMethod(String str){ System.out.println("private method : " + str); } protected void protectedMethod(String str){ System.out.println("protected method : " + str); } void defaultMethod(String str){ System.out.println("default method : " + str); } public void publicMethod(String str){ System.out.println("public method : " + str); } } 

子类:

public class SubClass extends ParentClass { public SubClass(){ System.out.println("default sub class"); // System.out.println("sub class print : " + privateVariable); System.out.println("sub class print : " + protectedVariable); System.out.println("sub class print : " + defaultVariable); System.out.println("sub class print : " + publicVariable); // System.out.println("sub class print : " + privateStaticVariable); System.out.println("sub class print : " + protectedStaticVariable); System.out.println("sub class print : " + defaultStaticVariable); System.out.println("sub class print : " + publicStaticVariable); privateMethod("private method."); protectedMethod("protected method."); defaultMethod("dafault method."); publicMethod("public method."); super.protectedMethod(protectedVariable); super.defaultMethod(defaultVariable); super.publicMethod(publicVariable); } public SubClass(String str){ super(str); System.out.println("sub class " + str); } public static void main(String[] args) { SubClass subClass = new SubClass(); new SubClass("A"); } /** @param str */ private void privateMethod(String str){ System.out.println("sub class private method : " + str); } /* (non-Javadoc) * @see extend.ParentClass#protectedMethod(java.lang.String) */ protected void protectedMethod(String str){ System.out.println("sub class protected method : " + str); } /* (non-Javadoc) * @see extend.ParentClass#defaultMethod(java.lang.String) */ void defaultMethod(String str){ System.out.println("sub class default method : " + str); } /* (non-Javadoc) * @see extend.ParentClass#publicMethod(java.lang.String) */ public void publicMethod(String str){ System.out.println("sub class public method : " + str); } } 

 

运行结果:

default parent class default sub class sub class print : protected Variable sub class print : default Variable sub class print : public Variable sub class print : protected Static Variable sub class print : dafault Static Variable sub class print : publicStatic Variable sub class private method : private method. sub class protected method : protected method. sub class default method : dafault method. sub class public method : public method. protected method : protected Variable default method : default Variable public method : public Variable parent class A sub class A

代码导读:

在父类里创建private,protected,default,public方法。

在子类里创建和父类同样签名、同样参数的方法。

在子类构造方法里调用子类的方法和父类的方法。

结论:

在子类中,如果不加关键字super的话,默认调用的是子类的方法,super关键字调用父类的方法。

在这里有一个方法重写的概念,我们可以在子类中,选中方法使用快捷键shift+alt+J,让eclipse自动生成注释,

在子类代码中可以看到,她生成的不是普通方法,而是

/* (non-Javadoc) * @see extend.ParentClass#publicMethod(java.lang.String) */

意思是说,这个方法是重写父类的方法,呵呵。

到这里都清楚了。

今天就到这里了,补充一下基础知识,以免下次再受挫折。希望对你有所帮助。

接下来要看一下,内部类、匿名类、final关键字等等,呵呵,今天要睡觉了,明天还要上班。下次做了试验,还要发到博客里。

 

挫折打击使你完善自己,要不直接去死。

你可能感兴趣的:(java继承之方法)