- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对于面向对象的程序而言,它的精华在于类的继承可以既有的类为基础,进而派生出新的类。通过这种方式,能快速地开发出新的类,而不需编写相同的程序代码,这也就是程序代码再利用的概念。 class Person { String name ; int age ; } class Student extends Person { String school ; } public class TestDemo { public static void main(String[] args) { Student s = new Student() ; // 访问Person类中的name属性 s.name = 张三 ; //访问Person类中的age属性 s.age = 25 ; // 访问Student类中的school属性 s.school = 北京 ; System.out.println(姓名:+s.name+,年龄:+s.age+,学校:+s.school) ; } } 注意:在java中只允许单继承,而不允许多重继承,也就是说一个子类只能有一个父类。 子类可以继承父类中的方法与属性,那父类中的构造方法怎么继承呢? class Person { String name ; int age ; public Person() { System.out.println(public Person(){}) ; } } class Student extends Person { String school ; public Student() { System.out.println(public Student(){}); } } 实例化的是子类的对象,但是程序却先去调用父类中的无参构造方法,之后再调用了子类本身的构造方法。 所以由此可以得出结论,子类对象在实例化时会默认先去调用父类中的无参构造方法,之后再调用本类中的相应构造方法。 实际上在子类构造方法的第一行默认隐含了一个“super()”语句,上面的程序可以改写成下面的形式: class Student extends Person { String school ; public Student() { super() ; //实际上在程序的这里隐含了这样一条语句 System.out.println(public Student(){}); } } 在子类继承父类的时候经常会有下面的问题发生: class Person { String name ; int age ; public Person(String name, int age) { this.name = name ; this.age = age ; } } class Student extends Person { String school ; public Student() { } } public class TestDemo{ public static void main(String[] args) { Student s = new Student() ; } } class Person { String name ; int age ; public Person(){} public Person(String name,int age) { this.name = name ; this.age = age ; } } 请问:如果使程序不出现编译错误,还可以怎么改? class Student extends Person { String school ; public Student() { super(张三,25); //明确调用的是父类中有两个参数的构造方法,编译时不再去找父类中无参的构造方法。 } } 注意: 用super调用父类中的构造方法,只能放在程序的第一行。 1、代表成员变量(属性) 当局部变量和成员变量的名字相同时,成员变量会被隐藏,如
文档评论(0)