JAVA程序设计类与对象续.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《JAVA程序设计类与对象续.ppt》由会员分享,可在线阅读,更多相关《JAVA程序设计类与对象续.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、主讲教师:主讲教师:杨祥茂杨祥茂2012年2月教学辅助课件教学辅助课件JAVA程序设计西南财经大学 前一页 课间休息 回目录复习类与对象1 概念定义2 描述形式3 关键知识点封装,构造方法,引用传递,this,static,对象数组4 典型例子火车的描述(链)西南财经大学 前一页 课间休息 回目录西南财经大学 前一页 课间休息 回目录特征1 一个火车是由若干车厢组成,每节车厢由数据和连接组成2 每个火车节点的类包括(数据和指针)组成所以:属性包括data 和next行为包括(1)构造方法(2)4个set和get语句西南财经大学 前一页 课间休息 回目录oclass Nodeoprivate S
2、tring data;oprivate Node next;opublic Node(String data)othis.data=data;oopublic String getData()oreturn this.data;oopublic void setNext(Node next)othis.next=next;oopublic Node getNext()/实际上取得下一个节点的地址oreturn this.next;ooopublic class nodetestopublic static void main(String args)oNode root=new Node(火车
3、头);/定义火车头oNode n1=new Node(A车厢);/第一节火车oNode n2=new Node(B车厢);/第二节火车 oNode n3=new Node(C车厢);/第三节火车o root.setNext(n1);/连接火车头与第一节火车o n1.setNext(n2);o n2.setNext(n3);o print(root);oo public static void print(Node node)o (输出数据);o while(node!=null)o System.out.print(node.getData()+t);o node=node.getNext()
4、;o o o 西南财经大学 前一页 课间休息 回目录在现实中假定有一个人Person类,student类可以分析得到:Student类的属性和Person属性可以得到Person属性有name和ageStudent类有属性name,age,school三个属性写成java的类就是西南财经大学 前一页 课间休息 回目录Class PersonClass Person private String name;private int age;public String getName()return name;public void setName(String name)this.name=nam
5、e;public int getAge()return age;public void setAge(int age)this.age=age;西南财经大学 前一页 课间休息 回目录Class studentClass Student private String name;private int age;private String school;public String getName()return name;public void setName(String name)this.name=name;public int getAge()return age;public void
6、setAge(int age)this.age=age;public String getSchool()return school;public void setSchool(String school)this.school=school;西南财经大学 前一页 课间休息 回目录问题在student类中,存在在Person类中的属性name和age,且有相同的set和get方法。现在希望在定义student类的时候,保留Person类中属性和方法。-继承西南财经大学 前一页 课间休息 回目录继承类的继承格式:class 父类 /定义父类 .class 子类 extends 父类 /子类继承父
7、类 例如西南财经大学 前一页 课间休息 回目录类继承示例oclass Personoprivate String name;oprivate int age;opublic String getName()oreturn name;oopublic void setName(String name)othis.name=name;oopublic int getAge()oreturn age;oopublic void setAge(int age)othis.age=age;oooclass Student extends Persono/不写任何代码,只是继承父类oopublic cla
8、ss extendtest1opublic static void main(String args)oStudent stu=new Student();ostu.setName(张三);/访问父类的方法ostu.setAge(20);/访问父类的方法o(姓名:+stu.getName()+年龄:+stu.getAge();ooo西南财经大学 前一页 课间休息 回目录类继承,在子类中添加自己的属性和方法oclass Personoprivate String name;oprivate int age;opublic String getName()oreturn name;oopublic
9、 void setName(String name)othis.name=name;oopublic int getAge()oreturn age;oopublic void setAge(int age)othis.age=age;oooclass Student extends Personoprivate String school;opublic void setSchool(String school)othis.school=school;oopublic String getSchool()oreturn school;oo oopublic class extendtest1
10、opublic static void main(String args)oStudent stu=new Student();ostu.setName(张三);/访问父类的方法ostu.setAge(20);/访问父类的方法ostu.setSchool(西南财经大学);oo(姓名:+stu.getName()+年龄:+stu.getAge()+学校:+stu.getSchool();ooo西南财经大学 前一页 课间休息 回目录类继承要注意的地方1 只允许多层继承,不允许多重继承。例如 class A class B class c extends A,B /同时继承两个类,是不允许的 又如
11、class A.class B extends A /允许多层继承 classs c extends B/允许多层继承2 定义 继承的子类叫做派生类3 子类不能直接访问父类的私有成员,但是可以调用父类的非私有方法,可以通过get来访问父类的私有成员。例如;西南财经大学 前一页 课间休息 回目录子类访问限制,不能直接访问父类中的属性(成员)oclass Student extends Personoprivate String school;opublic void setSchool(String school)othis.school=school;oopublic String getSc
12、hool()oreturn school;oo opublic void fun()o(父类的name 属性+name);/错误,无法访问o (父类的age 属性+age);/错误oo西南财经大学 前一页 课间休息 回目录子类可以间接访问属性内容oclass Student extends Personoprivate String school;opublic void setSchool(String school)othis.school=school;oopublic String getSchool()oreturn school;oo opublic void fun()o(“父类
13、的name 属性”+getName();/间接访问o (“父类的age 属性”+getAge();/间接 o西南财经大学 前一页 课间休息 回目录继承的问题1:子类对象实例化过程子类对象实例化的过程是先调用父类的构造方法,再调用子类的构造方法(就是先有父亲的行为再有儿子的行为)。例如西南财经大学 前一页 课间休息 回目录观察子类对象实例化过程oclass Personoprivate String name;oprivate int age;opublic Person()o(这是父类的构造方法);oopublic String getName()oreturn name;oopublic v
14、oid setName(String name)othis.name=name;oopublic int getAge()oreturn age;oopublic void setAge(int age)othis.age=age;oooclass Student extends Personoprivate String school;opublic Student()o(这是子类的构造方法);oopublic void setSchool(String school)othis.school=school;oopublic String getSchool()oreturn school;
15、oo opublic void fun()o(父类的name 属性+getName();/o (父类的age 属性+getAge();/ooopublic class extendtest1opublic static void main(String args)oStudent stu=new Student();ostu.setName(张三);/访问父类的方法,子类没有定义ostu.setAge(20);/访问父类的方法,子类没有定义ostu.setSchool(西南财经大学);/子类定义的方法oo(姓名:+stu.getName()+年龄:+stu.getAge()+学校:+stu.g
16、etSchool();ooo西南财经大学 前一页 课间休息 回目录说明上述的子类调用父类的构造方法,先执行父类的构造方法再执行子类的构造方法。上述程序中的构造方法public Student()(这是子类的构造方法);实际上在子类的构造方法中是这样的 public Student()super();/调用父类的无参构造方法 (“子类的构造方法”);西南财经大学 前一页 课间休息 回目录继承问题2:继承父类中的方法覆写 继承父类中的方法覆写方法覆写是指子类定义与父类相同名的方法。在覆写父类的方法中要考虑子类覆写的方法不能拥有比父类方法更严格的方法权限。前面介绍的权限Private default
17、(缺省)public在父类中使用了public,则在子类中必须使用public,否则编译将出错。西南财经大学 前一页 课间休息 回目录例如,方法覆写(覆写权利扩大)oclass Personovoid print()/定义一个默认的访问权限的方法oSystem.out.println(Person-void print();oooclass Student extends Person /继承opublic void print()/覆写方法o o System.out.println(Student-public void print();o ooopublic class override
18、demoopublic static void main(String args)onew Student().print();/执行被覆写的方法oo西南财经大学 前一页 课间休息 回目录覆写权利缩小,不能被编译oclass Personopublic void print()/定义一个默认的访问权限的方法oSystem.out.println(Person-void print();oooclass Student extends Person /继承o void print()/覆写方法,覆写权利缩小o o System.out.println(Student-public void pr
19、int();o ooopublic class overridedemoopublic static void main(String args)onew Student().print();/执行被覆写的方法oo西南财经大学 前一页 课间休息 回目录还是可以调用父类中被覆写的方法在子类中使用super 关键字,例如oclass Personovoid print()/定义一个默认的访问权限的方法oSystem.out.println(Person-void print();oooclass Student extends Person /继承o o void print()/覆写方法o su
20、per.print();/调用父类中的方法o System.out.println(Student-public void print();o ooopublic class overridedemoopublic static void main(String args)onew Student().print();/执行被覆写的方法oo西南财经大学 前一页 课间休息 回目录继承中的属性覆写,少用,不讲就是在继承中,子类中新属性名与父类中属性名相同,使用时采取就近原则,本类中的属性的使用用:This.属性名父类中的属性的使用用:Super.属性名西南财经大学 前一页 课间休息 回目录方法重载
21、与方法覆写的比较 方法重载 方法覆写定义不同 方法名相同、参数类型与个数不同 方法名、参数类型、返回值全相同 对权限没有要求 覆写的方法不能拥有更严格权限范围不同 发生在一个类中 发生在继承类中 西南财经大学 前一页 课间休息 回目录 super关键字的作用使用super可以调用父类中的构造方法,普通方法,属性。在子类中访问父类的属性 super.属性名 在子类中调用父类中的普通方法 super.方法名(参数);在子类中构造方法中调用父类中的构造方法 在子类的构造方法的第一行 写 super(参数值)例如 西南财经大学 前一页 课间休息 回目录oclass Personoprivate Str
22、ing name;oprivate int age;opublic Person(String name,int age)othis.setName(name);othis.setAge(age);oopublic String getName()oreturn name;oopublic void setName(String name)othis.name=name;oopublic int getAge()oreturn age;oopublic void setAge(int age)othis.age=age;oopublic String getInfor()oreturn 姓名:
23、+this.getName()+年龄:+this.getAge();oooclass Student extends Person /继承o private String school;o public Student(String name,int age,String school)o super(name,age);/调用父类的构造方法o this.setSchool(school);o o public void setSchool(String school)o this.school=school;o o public String getSchool()o return scho
24、ol;o o public String getInfor()/覆写方法o return super.getInfor()+学校:+this.getSchool();o ooopublic class superdemoopublic static void main(String args)oStudent stu=new Student(张三,20,西南财经大学);oSystem.out.println(stu.getInfor();oo西南财经大学 前一页 课间休息 回目录This 与super 区别西南财经大学 前一页 课间休息 回目录 final关键字的应用在java中final表示
25、最终的意思。常用来声明类、属性、方法。声明时要注意的是:1 使用final声明类不能有子类2 使用final声明方法不能被子类所覆写3 使用final声明变量就是常量,不能被修改西南财经大学 前一页 课间休息 回目录Final 声明类,不能有子类Final class AClass B exrends A /编译出错,因为不能 有子类西南财经大学 前一页 课间休息 回目录声明方法不能被子类覆写 class A public final void print()System.out.println(“Hello”);class B extends A public final void prin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 程序设计 对象
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内