JAVA程序设计 ch06面向对象编程.ppt
《JAVA程序设计 ch06面向对象编程.ppt》由会员分享,可在线阅读,更多相关《JAVA程序设计 ch06面向对象编程.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章第六章 面向对象编程面向对象编程JavaJavaJavaJava程序设计程序设计程序设计程序设计 http:/路路 强强2023/1/13PagePage 2 2 /36/36Lu Qiang,2009Hefei University of Technology,School of Computer and Information本章学习提示本章学习提示本章学习本章学习Java语言中面向对象编程的具体实施过程。语言中面向对象编程的具体实施过程。封装与继承封装与继承覆盖与重载覆盖与重载多态多态类的强制转换类的强制转换C Chapterhapter6 6 面向对象编程面向对象编程面向对象编程
2、面向对象编程PagePage 3 3 /36/36Lu Qiang,2009Hefei University of Technology,School of Computer and Information目目 录录封装与继承封装与继承1多态机制多态机制32覆盖与重载覆盖与重载类的转换类的转换4C Chapterhapter6 6 面向对象编程面向对象编程面向对象编程面向对象编程Lu Qiang,2009Hefei University of Technology,School of Computer and InformationPagePage 4 4 /36/36封装封装面向对象的程序设
3、计 以类作为基本处理单元,对象是类的实例。面向对象程序设计的重要特征是具有封装性、多态性和继承性。所谓封装封装封装封装表现在以下几个方面1.在类的定义中设置对对象中的成员变量和方法进行访问的权限。2.提供一个统一供其它类引用的方法。3.其它对象不能直接修改本对象所拥有的属性和方法。对象变量的四种访问权限 public protected private friendlypublic protected private friendlyC Chapterhapter6 6 面向对象编程面向对象编程面向对象编程面向对象编程PagePage 5 5 /36/36Lu Qiang,2009Hefei
4、University of Technology,School of Computer and InformationCode-封装封装1./引用私有方法和修改私有成员变量引用私有方法和修改私有成员变量2.class def06_013.private int x,y,z=0;4.private void method1()5.int x=3,y=4,z;6.z=x*y;7.System.out.println(z=+z);8.public void show()9.System.out.println(z=+z);10.11.class ch06_0112.public static voi
5、d main(String args)13.def06_01 ss=new def06_01();14.ss.method1();/调用私有方法出错15.ss.z=12;/修改私有变量出错16.ss.show();17.18.1./引用引用公共方法和修改私有成员变量公共方法和修改私有成员变量2.class def06_01b 3.private int x,y,z=0;4.public void method1()5.int x=3,y=4,z;6.z=x*y;7.System.out.println(z=+z);8.public void show()9.System.out.println
6、(z=+z);10.11.class ch06_01b 12.public static void main(String args)13.def06_01b ss=new def06_01b();14.ss.method1();15.ss.z=12;16.ss.show();17.C Chapterhapter6 6 面向对象编程面向对象编程面向对象编程面向对象编程PagePage 6 6 /36/36Lu Qiang,2009Hefei University of Technology,School of Computer and InformationCode-private(私有私有)
7、方法方法1./创建私有方法,在构造方法中引用方法,私有变量的引用权限创建私有方法,在构造方法中引用方法,私有变量的引用权限 2.class Scope06_02 3.private int x=10;4.Scope06_02()5.int x=1000;6.private void a()7.int x=200;x*=4;8.System.out.println(A of a method is+x);9.private void b()10.x*=2;11.System.out.println(B of a method is+x);12.13.public class ch06_02 14
8、.public static void main(String args)15.int x=100;16.System.out.println(x of main method is+x);17.Scope06_02 b1=new Scope06_02();18.b1.a();/调用私有方法出错19.b1.b();/调用私有方法出错20.System.out.println(x of main method is+x);21.22.不不想想让让其其它它类类访访问问就就设设置置为为私私有有权权限限C Chapterhapter6 6 面向对象编程面向对象编程面向对象编程面向对象编程PagePag
9、e 7 7 /36/36Lu Qiang,2009Hefei University of Technology,School of Computer and InformationCode-protected方法方法1./定义类的定义类的protected 方法,通过创建对象来引用此方法方法,通过创建对象来引用此方法 2.class Max06_03 3.private int x,y;4.protected int play(int s,int t)5.int m;6.x=s;7.y=t;8.m=(xy)?x/y:y/x;9.return m;10.11.12.public class ch
10、06_03 13.public static void main(String args)14.int result;15.Max06_03 ss=new Max06_03();16.result=ss.play(5,45);17.System.out.println(result=+result);18.19.使用使用protectedprotected定义的成员变量定义的成员变量或方法具有二重或方法具有二重性,类本身、子性,类本身、子类或包中的方法类或包中的方法可以访问它们,可以访问它们,而其它类没有访而其它类没有访问权限问权限C Chapterhapter6 6 面向对象编程面向对象编程
11、面向对象编程面向对象编程Lu Qiang,2009Hefei University of Technology,School of Computer and InformationPagePage 8 8 /36/36包包未设定public或private访问权限的均为friendly,包内包内的所有类可以访问它们,包外的不行的所有类可以访问它们,包外的不行一个JAVA程序文件只能定义一个public类,而且程序文件必须与它同名。为其它程序共享的类须经过编译进行打包,形为其它程序共享的类须经过编译进行打包,形成一个包文件,然后用成一个包文件,然后用import语句加以引用语句加以引用打包打包是
12、在java程序编译时进行的,注意参数-d被编译程序所在路径 javac d 被编译程序所在路径 被编译程序名.java被编译程序的第一行用package 包名;给出它被打入的包,该包与系统创建的子目录同名C Chapterhapter6 6 面向对象编程面向对象编程面向对象编程面向对象编程PagePage 9 9 /36/36Lu Qiang,2009Hefei University of Technology,School of Computer and InformationCode-friendly方法方法1./将将ch06_04_bag类独立建成类独立建成ch06_04_bag.jav
13、a类文件,放入类文件,放入bag包中包中2./以便其他程序直接调用以便其他程序直接调用,编译命令为编译命令为 C:javac-d 路径路径 ch06_04_bag.java3.package bag;4.public class ch06_04_bag5.public ch06_04_bag()System.out.println(this is a construct);6.public void doing()7.System.out.println(could you tell me);8.1./引用包引用包bag中的中的ch06_04_bag类文件类文件 2.import bag.ch
14、06_04_bag;3.public class ch06_04 4.static void store()5.System.out.println(this is a store processing);6.public static void main(String args)7.ch06_04_bag y=new ch06_04_bag();8.y.doing();9.store();10.未设定未设定public或或private访问权限的均访问权限的均为为friendly,包内的所包内的所有类可以访问它们,有类可以访问它们,包外的不行包外的不行C Chapterhapter6 6 面
15、向对象编程面向对象编程面向对象编程面向对象编程Lu Qiang,2009Hefei University of Technology,School of Computer and InformationPagePage 1010 /36/36类的继承类的继承类之间的继承关系是现实世界中遗传关系的直接模拟,它表示类之间的内在联系以及对属性和操作的共享,即子类可以沿用父类(被继承类)的某些特征。子类也可以具有自己独立的属性和操作。子类从父类继承有两个主要的方面:1.属性的继承属性的继承。例如,公司是一个父类,一个公司有名称、地址、经理、雇员等,这些都属于结构方面。2.方法的继承方法的继承。一个父类
16、定义了若干操作,如一个公司要有项目开发、利润创造、经理任命、员工录用等操作,子公司也将继承这些行为。C Chapterhapter6 6 面向对象编程面向对象编程面向对象编程面向对象编程PagePage 1111 /36/36Lu Qiang,2009Hefei University of Technology,School of Computer and InformationCode-类继承的实现类继承的实现1.class Shape06_05 2.public int x,y;3.private int m,n;4.public Shape06_05()/父类Shape的构造方法5.x=
17、10;y=20;6.m=100;n=200;7.System.out.println(x=+x+y=+y);8.System.out.println(this is a constractor of shape );9.10.public void measure()11.int s;s=x*y;System.out.println(result=+s);12.void show()13.System.out.println(x=+x+y=+y);14.15.public class Rectangle06_05 extends Shape06_05 16.public static void
18、 main(String args)17.int width=30,height=10;18.Rectangle06_05 tt=new Rectangle06_05();/创建对象时要引用的构造方法19.tt.x=width;20.tt.y=height;21.tt.measure();22.23.程序运行结果X=10 y=20This is a Constractor of ShapeResult 300C Chapterhapter6 6 面向对象编程面向对象编程面向对象编程面向对象编程Lu Qiang,2009Hefei University of Technology,School
19、of Computer and InformationPagePage 1212 /36/36属性继承与隐藏属性继承与隐藏 并不因为父类就意味着它有更多的功能。恰恰相反,子类比它们的父类具有更多的功能。因为子类是父类的扩展,增加了父类没有的属性和方法。子类不能访问父类的privateprivate成员,但子类可以访问其父类的publicpublic成员。protectedprotected访问是publicpublic和privateprivate访问之间一个保护性的中间层次。虽然被继承的父类成员没有在子类声明中列出,但是这些成员确实存在于子类中。C Chapterhapter6 6 面向对象
20、编程面向对象编程面向对象编程面向对象编程Lu Qiang,2009Hefei University of Technology,School of Computer and InformationPagePage 1313 /36/36构造方法的继承构造方法的继承构造方法的继承应遵守以下原则1.子类可以无条件的继承父类不含参数的构造方法无条件的继承父类不含参数的构造方法2.如果子类没有构造方法,则它继承父类无参数的构造方法作为自己的构造方法;如果子类有构造方法,那么在创建子类对象时,则将先执行继承下来的父类的构造方法,然后再执行自己的构造方法3.对于父类中包含有参数的构造方法,子类可以通过在自
21、己的构造方法中使用supersuper关键字来引用,而且必须是必须是子类构造方法中的第一条语句子类构造方法中的第一条语句。C Chapterhapter6 6 面向对象编程面向对象编程面向对象编程面向对象编程PagePage 1414 /36/36Lu Qiang,2009Hefei University of Technology,School of Computer and InformationCode-构造方法的继承构造方法的继承1.class Point06_06 2.protected int x,y;3.public Point06_06()/不带参数的构造方法4.x=0;y=0
22、;System.out.println(Point constructor:+this.toString();5.public Point06_06(int a,int b)/带参数的构造方法6.x=a;y=b;System.out.println(Point constructor:+this.toString();7.public String toString()8.return+x+,+y+;9.10.class Circle06_06 extends Point06_06 11.protected double radius;12.public Circle06_06()13.sup
23、er(4,5);radius=10;14.System.out.println(Circle constructor:+this.toString();15.public String toString()16.return Center=+super.toString()+radius=+radius;17.18.public class ch06_0619.public static void main(String args)20.Circle06_06 circle1=new Circle06_06();21.C Chapterhapter6 6 面向对象编程面向对象编程面向对象编程面
24、向对象编程Lu Qiang,2009Hefei University of Technology,School of Computer and InformationPagePage 1515 /36/36终止继承终止继承为了防止网络黑客将属于系统的重要信息的类来创建其子类,将这些子类添加代码并替换原有的类,防止父类方法的覆盖,保持父类方法不会被子类中定义的方法替代,保证程序的安全有效的运行处于这种考虑有时需要限制子类对某些方法的继承,通过关关键字键字finalfinal 来达到终止继承的目的C Chapterhapter6 6 面向对象编程面向对象编程面向对象编程面向对象编程PagePage
25、 1616 /36/36Lu Qiang,2009Hefei University of Technology,School of Computer and InformationCode-终止继承终止继承1./对父类中的public方法设置final 属性,禁止子类继承父类中定义的方法2./为系统安全考虑 防止父类方法被非法覆盖3./本程序中父类定义的sum()方法具有final属性,子类不准许定义与sum同名方法4.class mother06_07 5.int x=100,y=20;6.public final void sum()7.int s;s=x+y;8.System.out.p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA程序设计 ch06面向对象编程 JAVA 程序设计 ch06 面向 对象 编程
限制150内