繼承是面向?qū)ο缶幊讨蟹浅V匾母拍钪唬梢詭椭覀冊趯懘a時(shí)更加高效,更加有效地復(fù)用已有的代碼,避免重復(fù)的代碼編寫,同時(shí)也能夠使整個(gè)程序結(jié)構(gòu)更加清晰,易于維護(hù)。java中的繼承是非常強(qiáng)大的,它支持深繼承和淺繼承兩種不同的繼承方式。
所謂深繼承,就是指子類繼承了父類的所有屬性和方法,包括父類中的private屬性和方法。而淺繼承則只繼承了父類的public和protected屬性和方法,而對于private屬性和方法,則無法被繼承。
/* 深繼承示例 */ class Parent { private String name; // 父類的私有屬性 // 構(gòu)造函數(shù) public Parent(String name) { this.name = name; } // getName方法 public String getName() { return name; } } class Child extends Parent { private int age; // 子類的私有屬性 // 構(gòu)造函數(shù) public Child(String name, int age) { super(name); this.age = age; } // getAge方法 public int getAge() { return age; } } /* 淺繼承示例 */ class Parent { public String name; // 父類的public屬性 // 構(gòu)造函數(shù) public Parent(String name) { this.name = name; } // getName方法 public String getName() { return name; } // sayHi方法 protected void sayHi() { System.out.println("Hi from Parent class."); } } class Child extends Parent { protected int age; // 子類的protected屬性 // 構(gòu)造函數(shù) public Child(String name, int age) { super(name); this.age = age; } // getAge方法 public int getAge() { return age; } // sayHello方法 public void sayHello() { System.out.println("Hello from Child class."); } }
無論是深繼承還是淺繼承,都有它們各自的優(yōu)點(diǎn)和缺點(diǎn)。深繼承可以使子類完全擁有父類的所有屬性和方法,可以更加靈活地使用父類的代碼。但同時(shí)也有一定的安全風(fēng)險(xiǎn),可能會(huì)導(dǎo)致不能很好地維護(hù)整個(gè)代碼結(jié)構(gòu)。而淺繼承則可以在一定程度上規(guī)避這種安全風(fēng)險(xiǎn),不會(huì)破壞整個(gè)代碼結(jié)構(gòu),但同時(shí)也會(huì)有一定的局限性,子類僅能繼承父類的public和protected屬性和方法。