课时61:继承定义限制
摘要:本内容为继承的定义限制
继承要求
1.1、Java中不允许多重继承,只允许多层继承。
在实际生活中一个人只会有一个亲生父亲,在程序的逻辑中也是奉行此标准。而继承的主要目的是扩展已有类的功能,但多重继承可以同时继承多个类,将范围限定在同一类中。
假如已使用多层继承,此时对于C类同样可以继承拥有多个父亲的操作。但多层继承有限度,对于继承关系而言,如果自己写的代码,理论上不应超过三层。
class A { } class B { } class C extends A,B{ }//多重继承 public class JavaDemo { public static void main(string args[ ]) { } }
D:\mldn java>javac JavaDemo. Java JavaDemo.java:3:错误:需要’{‘ class C extends A,B{ }//多重继承 1 个错误 D:\mldnjava>
1 class A { } 2 class B extends A { } 3 class C extends B { } //多层继承 4 public class JavaDemo { 5 public static void main(string args[ ] { 6 7 } 8 }
1 class A { } 2 class B extends A { } 3 class C extends B { } //多层继 4 class D extends C { } 5 class E extends D { } 6 class D extends C { } 7 class D extends C { } 8 class X extends Z { } 9 public class JavaDemo { 10 public static void main(stringy args [ ] ) { 11 12 } 13 }
错误的继承:
Class A {} Class B {} Class C extends A,B {}//多重继承
正确的继承:
Class A {} Class B extends A {} Class C extends B {}//多层继承
1.2、在定义继承关系时,子类可以继承父类中的所有操作结构。
但私有操作属于隐式继承,而非私有操作属于显式继承。继承一旦发生,所有操作都可以被子类使用,在程序设计中不存在现实生活中“败家子”的概念,子类至少会维持父类的现有功能。
1 class Person { 2 private String name ; 3 public void setName (String name ) { 4 this.name = name ; 5 } 6 public string getName () { 7 return this.name ; 8 } 9 } 10 class Student extends Person { 11 public student(string name) { 12 setName(name) l;//设置name属性内容 13 } 14 public void fun ( ) { 15 // system .out .println (name) ; //直接访问不可能,因为私有的 16 System.out.println(getNeme() ) ; //直接访问 17 } 18 } 19 public class JavaDemo { 20 public static void main (string args [ ] { 21 Student stu =new Student (“林中强”) ; 22 syu.fun () ; 23 } 24 }