完整word版零基础学JAVAJavaSE面向对象部分14面向对象高级02Word文档下载推荐.docx
《完整word版零基础学JAVAJavaSE面向对象部分14面向对象高级02Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《完整word版零基础学JAVAJavaSE面向对象部分14面向对象高级02Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
属性覆写(较少使用)
我们来简单验证下哈
classA
{
Stringname="
redking"
;
};
classBextendsA
//子类定义了一个和父类中相同的name属性
Michael"
publicvoidprint()
//与System.out.println(this.name);
效果相同
System.out.println(name);
}
publicclassDemo01
publicstaticvoidmain(Stringargs[])
Bb=newB();
b.print();
程序打印了在子类中定义的name属性:
Michael
如果要打印父类中的name属性,我们可以修改成super.name
//如果要打印父类中的name属性,我们可以修改成super.name
System.out.println(super.name);
父类中的name属性输出了哈~这就叫属性的复写
属性一般情况下都要求被封装的,被封装之后肯定子类是无法看见父类中的内容,所以根本就无法覆写。
super与this调用构造方法能同时写在一个构造方法之中吗?
答案是不行哈~
Super调用构造方法时,一定要放在构造方法的首行,this调用构造方法时也必须放在首行,如果两个都放在首行,则肯定冲突。
有人认为可以不调用super方法哈,我们看下面的Demo02
publicA(){}
//里面有三个构造方法
publicB()
this("
abc"
888);
publicB(Stringname)
this();
publicB(Stringname,intage)
this(name);
这样就产生了一个问题,我们在讲this关键字时也是提到过的哈~
在使用this()调用构造方法的时候肯定要留下一个出口。
否则编译通不过哈~
//最好把this("
修改成super()作为出口哈~
super();
现在编译就通过了哈~
本季主要知识点:
1、继承的类图表示
2、继承的题目
现在我们来看个Demo03:
这个滴继承关系我们来用类图表示
知道了上面的内容,我们来看下练习题:
classPerson
privateStringname;
privateStringaddr;
privatecharsex;
privateintage;
//一般参数少的构造方法写在上面哈~~
publicPerson(){}
publicPerson(Stringname,Stringaddr)
this.setName(name);
this.setAddr(addr);
this.setSex('
男'
);
this.setAge(27);
publicPerson(Stringname,Stringaddr,charsex,intage)
this.setSex(sex);
this.setAge(age);
publicvoidsetName(Stringname)
this.name=name;
publicvoidsetAddr(Stringaddr)
this.addr=addr;
//M:
表示男;
F:
表示女
publicvoidsetSex(charsex)
this.sex=sex;
publicvoidsetAge(intage)
this.age=age;
publicStringgetName()
returnthis.name;
publicStringgetAddr()
returnthis.addr;
publicchargetSex()
returnthis.sex;
publicintgetAge()
returnthis.age;
//所有的内容应该交给外部输出
publicStringgetInfo()
return"
姓名:
"
+this.name
+"
,地址:
+this.addr
,性别:
+(this.sex=='
M'
?
男"
:
女"
)
,年龄:
+this.age;
classStudentextendsPerson
privatefloatmath;
privatefloatenglish;
publicStudent()
//默认隐含了super();
pu