




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
13类和对象-1程序语言的发展面向机器(机器语言、汇编语言)可读性、可维护、移植性差;效率高。面向过程核心:算法+数据结构缺陷:随着应用程序的规模扩大,操作与数据分离所带来的维护工作量越来越大不适用于GUI界面、事件驱动编程面向对象面向对象设计思想的要点认为客观世界由各种对象组成,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。把所有对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。按照子类与父类的关系,把若干个对象类组成一个层次结构的系统。对象彼此之间仅能通过传递消息互相联系
抽象性 封装性 继承性多态性面向对象程序设计的优点开发时间短,效率高,可靠性高,所开发的程序更强壮。由于面向对象编程的可重用性,可以在应用程序中大量采用成熟的类库,从而缩短了开发时间。应用程序更易于维护、更新和升级。继承和封装使得应用程序的修改带来的影响更加局部化。可重用性 可扩展性 可管理性51.面向对象的概念现实世界 :人、狗、书计算机模型:类是对象的模板,对象是类的实例
classPerson{}
Personp=newPerson();intx=9;int[]a=newint[]{1,2,3};Strings=newString(“qaz”);6现实生活中的对象对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(class)。classCar{intcolorNo;intdoorNumber;
intspeed;
voidbrake(){…}voidspeedUp(){…}voidslowDown(){…}}
抽象数据类型7……Carcar1;Carcar2;…
…CarcarN;方法构造方法是一种特殊方法,它的名字必须与它所在的类的名字完全相同,而且没有类型,构造方法也可以重载。方法重载:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是某个参数的类型不同。实例方法和类方法classA{inta;floatmax(floatx,floaty){//实例方法
…}
staticfloatjerry(){//类方法
…}
staticvoidspeak(Strings){//类方法
…}}实例方法既能对类变量操作也能对实例变量操作,而类方法只能对类变量进行操作。实例方法可以调用该类中的实例或类方法;类方法只能调用该类的类方法,不能调用实例方法。静态的是属于类的,实例的属于对象实例。成员变量、类变量、局部变量对象的内存模型(引用、指针\堆和栈)创建一个对象包括对象的声明和为对象分配classPoint{intx,y;Point(inta,intb){x=a;y=b;}}Pointp1=newPoint(5,15);Pointp2=newPoint(8,18);p1=p2;参数的传递this关键字包是Java语言中有效地管理类的一个机制包名的目的是有效的区分名字相同的类,不同Java源文件中两个类名字相同时,它们可以通过隶属不同的包来相互区分com.sun.java.Hello.class包和import15访问权限当类可以被访问时,对类的成员变量和成员方法而言,其应用范围可以通过施以一定的访问权限来限定。 类内 包内 子类 任意 公共的(public) ★ ★ ★ ★ 保护的(protected)★ ★ ★ 包访问(缺省) ★ ★ 私有的(private) ★基本类型的类包装
提供了基本数据类型相关的类,这些类在java.lang包中,分别是:Byte、Integer、Short、Long、Float、Double和Character类.自动装箱就是允许把一个基本数据类型的值直接赋值给基本数据类型相对应的类的实例,例如:
Integernumber=100;或
intm=100;Integernumber=m;上述语句的装箱过程是:Integernumber=newInteger(m);自动拆箱就是允许把基本数据类型的类的实例当作相应的基本数据类型来使用,例如:number是一个Integer对象,那么允许:
intx=number+number;上述语句的拆箱过程是:intx=Value()+Value();4.11基本类型的类包装
4.11.1Double和Float类4.11.2Byte、Short、Integer、Long类4.11.3Character类4.11.4自动装箱与拆箱自动装箱就是允许把一个基本数据类型的值直接赋值给基本数据类型相对应的类的实例,例如:
Integernumber=100;或
intm=100;Integernumber=m;上述语句的装箱过程是:Integernumber=newInteger(m);自动拆箱就是允许把基本数据类型的类的实例当作相应的基本数据类型来使用,例如:number是一个Integer对象,那么允许:
intx=number+number;上述语句的拆箱过程是:intx=Value()+Value();18子类子类是作为另一个类的扩充或修正而定义的一个类。bicycle(superclass)MountainbikesRacingbikesTandembikessubclass19继承继承使得子类可以利用父类中定义的方法和变量,就像它们属于子类本身一样。classEmployee{Stringname;publicvoidshowInfo(){System.out.println(name);}}
classManagerextendsEmployee{Stringdepartment;publicvoidshowInfo(){System.out.println(name);System.out.println(“Managerof”+department);}}
20方法override和成员变量的隐藏覆盖使得在子类中可以重新定义父类中已有的方法,从而是子类具有自己的行为。classEmployee{Stringname;publicvoidshowInfo(){System.out.println(name);}}
classManagerextendsEmployee{Stringdepartment;
Stringname;publicvoidshowInfo(){System.out.println(name);System.out.println(“Managerof”+department);}}
21继承的例子ShapePointCircleCylinder何时选择继承?一个很好的经验:“B是一个A吗?”如果是则让B做A的子类.在更多的时候,组成关系比继承更能使系统具有高度的灵活性,可维护行,并且提高系统的可重用性。ShapePointCircleCylinder22方法覆盖时应遵循的原则:覆盖后的方法不能比被覆盖的方法有更严格的访问前提条件。覆盖后的方法不能比被覆盖的方法产生更多的例外,也不能有更松的事后条件。super1、子类如果想明确使用父类的构造方法,必须在子类的构造方法中使用关键字super来调用父类的构造方法,而且super必须是子类构造方法中的头一条语句。3、在父类中定义构造方法时,应尽量写一个不带参数的构造方法,以防子类省略super时出现错误。2、在子类的构造方法中,没有明显地写出super关键字来调用父类的某个构造方法,那么默认地有:super();即调用父类的不带参数的构造方法。2、final类不能被继承,即不能有子类。1、final关键字可以修饰类、成员变量和方法中的局部变量。3、修饰方法,则不允许子类重写父类的final方法。4、成员变量或局部变量被修饰为final的,就是常量。常量在声明时没有默认值,所以在声明常量时必须指定该常量的值,而且不能再发生变化。final对象的上转型1.上转型对象不能操作子类新增的成员变量(失掉了这部分属性);不能调用子类新增的方法(失掉了一些功能)。2.上转型对象可以访问子类继承或隐藏的成员变量,也可以调用子类继承的方法或子类的重写方法。上转型对象操作子类继承的方法或子类重写的方法,其作用等价于子类对象去调用这些方法。因此,如果子类重写了父类的某个方法后,当对象的上转型对象调用这个方法时一定是调用了子类重写的方法。多态多态:不同的对象收到同一个消息可产生完全不同的效果
或同一个行为具有多个不同表现形式或形态的能力多态的效果:用户发送一个通用的消息,而实现的细节则由接收对象自行决定。多态的作用:增强了操作的透明性、可理解性和可扩展性。增强了软件的灵活性和重用性。多态存在的三个必要条件继承重写父类引用指向子类对象2627抽象类抽象类:用abstract关键字来修饰一个类时,该类叫做抽象类;抽象类必须被继承。抽象类不能被直接实例化。它只能作为其它类的超类,这一点与最终类(final类)正好相反。抽象方法:用abstract来修饰一个方法时,该方法叫做抽象方法。抽象方法必须被重写抽象方法只有声明,不能有实现。定义了抽象方法的类必须是抽象类。abstract类的理解
1、抽象类可以抽象出重要的行为标准,该行为标准用抽象方法来表示。即抽象类封装了子类必需要有的行为标准。2、抽象类声明的对象可以成为其子类的对象的上转型对象,调用子类重写的方法,即体现子类根据抽象类里的行为标准给出的具体行为。3、多态核心技术之一是使用上转型对象,即将abstract类声明对象作为其子类的上转型对象,那么这个上转型对象就可以调用子类重写的方法。4、利用多态设计程序的好处是,可以体现程序设计的所谓开-闭原则。开-闭原则强调一个程序应当对扩展开放,对修改关闭,增强代码的可维护性。29接口(interface)JDK8版本之前,接口体中只有抽象方法.所有的static常量的访问权限一定都是public(允许省略public、final和static修饰符,接口中不会有变量)interfacePrintable{
publicstaticfinalintMAX=100;//等价写法:intMAX=100;
publicabstractvoidadd();
//等价写法:voidadd();}publicinterfacePrintable{publicstaticfinalintMAX=100;//等价写法:intMAX=100;publicabstractvoidon();//等价写法:voidon();publicdefaultintmax(inta,intb){//default方法returna>b?a:b;}
publicstaticvoidf(){System.out.println("注意是从JavaSE8开始的");}}classAimplementsPrintable,Addable{}一个类实现了某个接口,那么这个类就自然拥有了接口中的常量,default方法(去掉了default关键字),该类也可以重写接口中的default方法(注意,重写时需要去掉default关键字)。如果一个非abstract类实现了某个接口,那么这个类必须重写该接口的所有abstract方法,即去掉ab
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度服装寄存与展会租赁服务合作协议
- 2025年度安全软件开发人工费用支付合同
- 康养项目的可行性研究报告
- 中医护理学(第5版)课件 第4章 病机
- 有机蔬菜种植技术大全
- 智能家居集成系统
- 政府机构信息化建设规划方案
- 肿瘤内科骨肉瘤练习卷含答案
- 养老护理中级练习卷含答案
- 如何制定有效的资产配置策略有哪些因素需要考虑
- 初一年级班级日志记载表(详)
- 建设工程安全生产管理习题库及答案
- 项目1 多旋翼无人机的组装与调试
- 供应链管理:高成本、高库存、重资产的解决方案 第2版
- 马克笔建筑快速表现
- 桥台锥坡工程量计算公式
- 日本夏日祭活动鉴赏
- 中国教育史笔记全
- 某工业锅炉安装工程监理作业指导书
- 名校《强基计划》初升高衔接数学讲义(上)
- GB/T 41028-2021航空航天流体系统液压软管、管道和接头组件的脉冲试验要求
评论
0/150
提交评论