使用Java实现面向对象编程_第1页
使用Java实现面向对象编程_第2页
使用Java实现面向对象编程_第3页
使用Java实现面向对象编程_第4页
使用Java实现面向对象编程_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、使用Java实现面向对象编程第一章 抽象和封装1.1 用面向对象设计电子宠物面向对象设计的过程就是抽象的过程:第一步:发现类。第二步:发现类的属性。第三步:发现类的方法。软件出现的目的是为了:用计算机的言语描述现实世界。用计算机解决现实世界的问题。抽象是遵循的原则:属性、方法的设置是为了解决业务的问题。关注主要属性、方法如没有必要、勿增加额外的类、属性与方法。类的基本结构:其主要由属性和行为组成,成为类的成员变量(或者成员属性)和成员方法,统称为类的成员(除此之外,类的成员还包括构造方法、代码块等)。类与对象:通过构造方法来创建对象,例如”Penguin p = new Penguin(;”。

2、通过对象名.属性名的方式调用属性,例如”=”pp”;”。通过对象名.方法名的方式调用属性,例如”p.print(;”。类(Class和对象(Object是面向对象中的两个核心概念。类是对某一类事物的描述,是抽象的、概念上的定义。对象是实际存在的该事物的个体、是具体的、现实的。类的规范:类名、属性名、方法名以及常量名的命名规范如下:类名由一个或几个单词组成,每个单词的第一个字母大写。属性名和方法名由一个或几个单词组成,第一个单词首字母小写,其他单词首字母大写。常量名由一个或几个单词组成,所有字母大写。Static可以用来修饰属性、方法和代码块。Static修饰的变量属于这个类所有,即

3、由这个类创建的所有对象共用同一个static变量。通常把static修饰的属性和方法称为类属性(类变量)、类方法。不使用static修饰的属性和方法,属于单个对象,通常称为实例属性(实例变量、实例方法。类属性、类方法可以通过类名和对象名访问,实例属性、实例方法只能通过对象名访问。Final可以用来修饰属性、方法和类。用final修饰的变量成为常量,其值固定不变。1.2 构造方法及其重载构造方法构造方法(Constructor是一个特殊方法,它用于创建类的对象,因此一类必须包含至少一个构造方法,否则就无法创建对象。构造方法的名字和类名相同,没有返回值类型。构造方法的作用主要就是在创建对象时执行一

4、些初始化操作。在没有给类提供任何构造方法时,系统会提供一个无参的方法体为空的默认构造方法。一旦提供了自定义构造方法,系统将不会在提供这个默认构造方法。如果要使用它就必须手动添加。方法重载如果同一个类中包含了两个或两个以上方法,它们的方法名相同,方法参数个数或参数类型不同,则称该方法被重载了,这个过程称为方法重载。成员方法和构造方法都可以进行重载。方法重载的判断依据如下:1. 必须是在同一个类里。2. 方法名相同。3. 方法参数个数或参数类型不同。4. 与方法返回值和方法修饰符没有任何关系。封装封装(Encapsulation是类的三大特性之一,就是将类的状态信息隐藏在类内部,不允许外部程序直接

5、访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。封装的具体步骤:1. 修改属性的可见性来限制对属性的访问。2. 为每个属性创建一对赋值(setter方法和取值(getter方法,用于对这些属性的存取。3. 在赋值方法中,加入对属性的存取控制语句。封装的好处:1. 隐藏类的实现细节 .2. 让使用者只能通过程序员规定的方法来访问数据。3. 可以方便地加入存取控制语句,限制不合理操作。访问修饰符:Private:成员变量和方法只能在类内被访问,具有类可见性。默认:成员变量和方法只能被同一个包里的类访问,具有包可见性。Protected:可以被同一个包中类访问,被同一个项目中不同包中的子类

6、访问。Public:可以被同一个项目中所有类访问,具有项目可见性,这是最大的访问权限。This关键字1. 使用this调用成员变量,解决成员变量和局部变量同名冲突。Public void setName(String nameT = name;/成员变量和局部变量同名必须使用thisPublic void setName(String xmName = xm ; /成员变量和局部变量不同名,this可以省略2. 使用this调用成员方法Public void play(int nHealth = health n;This.print(;/this可以省略,直接调用print(

7、;3. 使用this调用重载的构造方法,只能在构造方法中使用,必须是构造方法的第一条语句。Public Penguin(String name,String sexT = name;This.sex = sex;Public Penguin(String name,int health,int love,String sexThis(name,sex; /调用重载的构造方法This.health = health;This.love = love;因为this是在对象内部指代自身的引用,所以this只能调用实例变量、实例方法和构造方法。This不能调用类变量和类方法。This也

8、不能调用局部变量。第二章 继承继承的概念继承(InHeritance通过extends关键字来实现,其中SubClass称为子类、SuperClass称为父类、基类或超类。修饰符如果是public,该类在整个项目中可见;不写public修饰符则该类只在当前包可见;不可以使用private和protected修饰符。子类可以从父类中继承的有:继承public和protected修饰的属性和方法,不管子类和父类是否在同一个包里。继承默认权限修饰符的属性和方法,但子类和父类必须在同一个包里。无法继承private修饰的属性和方法。无法继承父类的构造方法。方法的重写在子类中可以根据需求对从父类继承的方

9、法进行重新编写,称为方法的重写或方法的覆盖(overriding。1. 重写方法和被重写方法必须具有相同的方法名。2. 重写方法和被重写方法必须具有相同的参数列表。3. 重写方法的返回值类型必须和被重写方法的返回值类型相同或者是其子类。4. 重写方法的不能缩小被重写方法的访问权限。Super关键字Super代表对当前对象的直接父类对象的默认引用。Super必须是出现在子类中(子类的方法和构造方法中),而不是其他的位置。可以访问父类的成员,例如父类的属性、方法、构造方法。注意访问权限的限制,例如无法通过super访问private成员。继承条件下构造方法的调用规则如下1. 如果子类的构造方法中没

10、有通过super显式调用父类的有参构造方法,也没有通过this显式调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法。2. 如果子类的构造方法中通过super显式调用父类的有参构造方法,那将执行父类相应构造方法,而不执行父类无参构造方法。3. 如果子类的构造方法中通过this显式调用自身的其他的构造方法,有相应构造方法中应用以上两条规则。4. 特别注意的是,如果存在多级继承关系,在创建一个子类对象时,以上规则则会多次向更高一级父类应用,一直到执行顶级父类Object类的无参构造方法为止。在构造方法中如果有this语句或super语句出现,只能是第一条语句。在一个构造方法中不允许同时出

11、现this和super语句(否则就有两条第一条语句)。在类方法中不允许出现this或super关键字。在实例方法中this和super语句不要求是第一条语句,可以共存。抽象类和抽象方法抽象类和抽象方法都通过abstract关键字来修饰.抽象类不能实例化。抽象类中可以没有,可以有一个或多个抽象方法,甚至可以全部方法都是抽象方法。抽象方法只有方法声明,没有方法实现。有抽象方法的类必须声明为抽象类。子类必须重写所有的抽象方法才能实例化,否则子类还是一个抽象类。Abstract可以用来修饰类和方法,但不能用来修饰属性和构造方法。Final修饰符1. 用final修饰的类,不能再被继承。2. 用fina

12、l修饰的方法,不能被子类重写。3. 用final修饰的变量(包括成员变量和局部变量将变成常量,只能赋值一次。4. 使用final修饰引用型变量,变量的值是固定不变的,而变量所指向的对象的属性值是可变的。Final和abstract比较Abstract可以用修饰类和方法,不能用来修饰属性和方法。Final可以用来修饰类、方法和属性,不能修饰构造方法。Abstract不能和private同时修饰一个方法。Abstract不能和static同时修饰一个方法。Abstract不能和final同时修饰一个方法和类。第三章 多态多态的概念多态(Polymorphism是具有表现多种形态的能力的特征。同一个

13、实现接口,使用不同的实例而执行不同的操作。子类转换父类时的规则1. 将一个父类的引用指向一个子类的对象,称为向上转型(upcasting,自动进行类型转换。2. 此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法。3. 此时通过父类引用变量无法调用子类特有的方法。实现多态的三个条件1. 继承的存在。(继承是多态的基础,没有继承就没有多态。2. 子类重写父类的方法(多态下调用子类重写后的方法)。3. 父类引用变量指向子类对象(子类到父类的类型转换)。父类到子类的转换将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型。向下转型后可以访问子类特有的方法。必须转换父类指

14、向的真实子类类型,否则将出现类型转换异常ClassCastException。Instanceof运算符对象 instanceof 类或接口该运算符用来判断一个对象是否属于一个类或者实现一个接口,结果为true或false。在强制类型转换之前通过instanceof运算符检查对象的真实类型,然后再进行相应的强制转换,这样就可以避免类型转换异常,从而提高代码健壮性。使用instanceof时,对象的类型必须和instanceof的第二个参数所指定的类或接口在继承树上有上下级关系,否则会出现编译错误。Public class TestPoly2Public static void main(Str

15、ing argsPet pet = new Penguin(“楠楠”,”Q妹”;Pet.eat(;If(pet instanceof DogDog dog = (Dog pet;dog.catchingFlyDisc(;else if(pet instanceof PenguinPenguin pgn = new Penguin(;pgn.swimming(;第四章 接口接口的实现和继承1. 接口和类、抽象类是一个层次的概念,命名规则相同。如果修饰符是public,则该接口在整个项目中可见。如果省略修饰符,则该接口只在当前包可见。2. 接口中可以定义常量、不能定义变量。接口中属性都会自动用pu

16、blic static final修饰,即接口中属性都是全局静态常量。接口中的常量必须在定义时指定初始值。3. 接口中所有方法都是抽象方法。接口中方法都会自动用public abstract 修饰,即接口中只有全局抽象方法。4. 和抽象类一样,接口同样不能实例化,接口中不能有构造方法。5. 接口之间可以通过extends 实现继承关系,一个接口可以继承多个接口,但接口不能继承类。6. 一个类只能有一个直接父类,但可以通过implements实现多个接口。类必须实现接口的全部方法,否则必须定义抽象类。类在继承父类的同时又实现了多个接口时,extends必须位于implements之前。接口体现了

17、约定和实现相分离的原则,通过面向接口编程,可以降低代码间的耦合性,提高代码的可扩展性和可维护性。面向接口编程意味着:开发系统时,主体构架使用接口,接口构成系统的骨架,这样就可以通过更换实现接口的类来实现更换系统。在C#中使用接口1. 接口之间可以通过冒号”:”实现继承关系,一个接口可以继承多个接口,但接口不能继承类。类只能继承一个类,但可以实现多个接口,使用冒号”:”来继承类和实现接口。2. 接口定义零个或多个成员,成员主要是方法,属性和索引器。接口中不能包含常量、变量或构造方法,也不能包含任何静态成员。3. 接口中成员访问权限是public,定义接口时显示指定任何修饰符都是非法的。4. 按照

18、惯例,C#中接口的名字以大写字母“I”开头。C#中接口中成员主要是方法、属性和索引器。接口中不能包含常量、变量、构造方法和任何静态成员。定义接口时显示指定任何修饰符是非法的。第八章 异常异常的概念异常就是在程序的运行过程中所发生的不正常的事件。常见的异常类型异常说明Exception异常层次结构的根类ArithmeticException算数错误情形,如以零作除数ArrayIndexOutOfBoundsException数组下标越界NullPointerException尝试访问null对象成员ClassNotFoundException不能加载所需的类InputMismatchExcept

19、ion欲得到的数据类型与实际输入的类型不匹配IllegalArgumentException方法接收到非法参数ClassCastException对象强制类型转换出错NumberFormatException数字格式转换异常Throw和throws的区别表现在以下三个方面1. 作用不同:throw用于程序员自行产生并抛出异常,throws用于声明在该方法内抛出了异常。2. 使用的位置不同:throw位于方法体内部,可以作为单独语句使用。Throws必须跟在方法参数列表的后面,不能单独使用。3. 内容不同:throw抛出一个异常对象,而且只能是一个。Throws后面跟异常类,而且可以跟多个异常类

20、。异常分类Throwable类:所有异常类型都是Throwable类的子类,它派生两个子类:Error和Exception。Error类:表示仅靠程序本身无法恢复的严重错误,比如说内存溢出动态链接失败,虚拟机错误。应用程序不应该抛出这种这种类型的对象(一般是由虚拟机抛出)。假如出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。所以在进行程序设计时,应该更关注Exception类。Exception类:由java应用程序抛出和处理的非严重错误,比如所需文件找不到、网络连接不通或中断、算术运算出错(如被零除、数组下标越界、转载了一个不存在的类,对null对象操作、类型转换异常等。它的

21、各种不同的子类分别对应不同类型的异常。运行时异常:包括RuntimeException及其所有子类。不要求程序必须对它们做出处理。Checked异常(非运行时异常:除了运行时异常外的其他由Exception继承来的异常类。程序必须捕获或者声明抛出这种异常,否则会出现编译错误,无法通过编译。处理方式包括两种:通过try-catch在当前位置捕获并处理异常,通过throws声明抛出异常交给上一级调用方法处理。日志及分类SQL日志:记录系统执行的SQL语句。异常日志:记录系统运行中发生的异常事件。业务日志;用于记录系统运行过程,例如用户登录,操作记录。Log4j配置文件1. 输出级别Log4j.rootLogger = debug、stdout、logfileFatal:指出每个严重的错误事件将会导致应用程序的退出。Error:指出虽然发生错误事件,但

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论