使用Java实现面向对象编程文档格式.docx

上传人:b****5 文档编号:17920512 上传时间:2022-12-12 格式:DOCX 页数:10 大小:21.45KB
下载 相关 举报
使用Java实现面向对象编程文档格式.docx_第1页
第1页 / 共10页
使用Java实现面向对象编程文档格式.docx_第2页
第2页 / 共10页
使用Java实现面向对象编程文档格式.docx_第3页
第3页 / 共10页
使用Java实现面向对象编程文档格式.docx_第4页
第4页 / 共10页
使用Java实现面向对象编程文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

使用Java实现面向对象编程文档格式.docx

《使用Java实现面向对象编程文档格式.docx》由会员分享,可在线阅读,更多相关《使用Java实现面向对象编程文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

使用Java实现面向对象编程文档格式.docx

Static可以用来修饰属性、方法和代码块。

Static修饰的变量属于这个类所有,即由这个类创建的所有对象共用同一个static变量。

通常把static修饰的属性和方法称为类属性(类变量)、类方法。

不使用static修饰的属性和方法,属于单个对象,通常称为实例属性(实例变量、实例方法。

类属性、类方法可以通过类名和对象名访问,实例属性、实例方法只能通过对象名访问。

Final可以用来修饰属性、方法和类。

用final修饰的变量成为常量,其值固定不变。

1.2构造方法及其重载

构造方法

构造方法(Constructor是一个特殊方法,它用于创建类的对象,因此一类必须包含至少一个构造方法,否则就无法创建对象。

构造方法的名字和类名相同,没有返回值类型。

构造方法的作用主要就是在创建对象时执行一些初始化操作。

在没有给类提供任何构造方法时,系统会提供一个无参的方法体为空的默认构造方法。

一旦提供了自定义构造方法,系统将不会在提供这个默认构造方法。

如果要使用它就必须手动添加。

方法重载

如果同一个类中包含了两个或两个以上方法,它们的方法名相同,方法参数个数或参数类型不同,则称该方法被重载了,这个过程称为方法重载。

成员方法和构造方法都可以进行重载。

方法重载的判断依据如下:

1.必须是在同一个类里。

2.方法名相同。

3.方法参数个数或参数类型不同。

4.与方法返回值和方法修饰符没有任何关系。

封装

封装(Encapsulation是类的三大特性之一,就是将类的状态信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

封装的具体步骤:

1.修改属性的可见性来限制对属性的访问。

2.为每个属性创建一对赋值(setter方法和取值(getter方法,用于对这些属性的存取。

3.在赋值方法中,加入对属性的存取控制语句。

封装的好处:

1.隐藏类的实现细节.

2.让使用者只能通过程序员规定的方法来访问数据。

3.可以方便地加入存取控制语句,限制不合理操作。

访问修饰符:

Private:

成员变量和方法只能在类内被访问,具有类可见性。

默认:

成员变量和方法只能被同一个包里的类访问,具有包可见性。

Protected:

可以被同一个包中类访问,被同一个项目中不同包中的子类访问。

Public:

可以被同一个项目中所有类访问,具有项目可见性,这是最大的访问权限。

This关键字

1.使用this调用成员变量,解决成员变量和局部变量同名冲突。

PublicvoidsetName(Stringname{

This.name=name;

//成员变量和局部变量同名必须使用this

}

PublicvoidsetName(Stringxm{

Name=xm;

//成员变量和局部变量不同名,this可以省略

2.使用this调用成员方法

Publicvoidplay(intn{

Health=health–n;

This.print(;

//this可以省略,直接调用print(;

3.使用this调用重载的构造方法,只能在构造方法中使用,必须是构造方法的第一条语句。

PublicPenguin(Stringname,Stringsex{

This.sex=sex;

PublicPenguin(Stringname,inthealth,intlove,Stringsex{

This(name,sex;

//调用重载的构造方法

This.health=health;

This.love=love;

因为this是在对象内部指代自身的引用,所以this只能调用实例变量、实例方法和构造方法。

This不能调用类变量和类方法。

This也不能调用局部变量。

第二章继承

继承的概念

继承(InHeritance通过extends关键字来实现,其中SubClass称为子类、SuperClass称为父类、基类或超类。

修饰符如果是public,该类在整个项目中可见;

不写public修饰符则该类只在当前包可见;

不可以使用private和protected修饰符。

子类可以从父类中继承的有:

继承public和protected修饰的属性和方法,不管子类和父类是否在同一个包里。

继承默认权限修饰符的属性和方法,但子类和父类必须在同一个包里。

无法继承private修饰的属性和方法。

无法继承父类的构造方法。

方法的重写

在子类中可以根据需求对从父类继承的方法进行重新编写,称为方法的重写或方法的覆盖(overriding。

1.重写方法和被重写方法必须具有相同的方法名。

2.重写方法和被重写方法必须具有相同的参数列表。

3.重写方法的返回值类型必须和被重写方法的返回值类型相同或者是其子类。

4.重写方法的不能缩小被重写方法的访问权限。

Super关键字

Super代表对当前对象的直接父类对象的默认引用。

Super必须是出现在子类中(子类的方法和构造方法中),而不是其他的位置。

可以访问父类的成员,例如父类的属性、方法、构造方法。

注意访问权限的限制,例如无法通过super访问private成员。

继承条件下构造方法的调用规则如下

1.如果子类的构造方法中没有通过super显式调用父类的有参构造方法,也没有通过this显式调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法。

2.如果子类的构造方法中通过super显式调用父类的有参构造方法,那将执行父类相应构造方法,而不执行父类无参构造方法。

3.如果子类的构造方法中通过this显式调用自身的其他的构造方法,有相应构造方法中应用以上两条规则。

4.特别注意的是,如果存在多级继承关系,在创建一个子类对象时,以上规则则会多次向更高一级父类应用,一直到执行顶级父类Object类的无参构造方法为止。

在构造方法中如果有this语句或super语句出现,只能是第一条语句。

在一个构造方法中不允许同时出现this和super语句(否则就有两条第一条语句)。

在类方法中不允许出现this或super关键字。

在实例方法中this和super语句不要求是第一条语句,可以共存。

抽象类和抽象方法

抽象类和抽象方法都通过abstract关键字来修饰.

抽象类不能实例化。

抽象类中可以没有,可以有一个或多个抽象方法,甚至可以全部方法都是抽象方法。

抽象方法只有方法声明,没有方法实现。

有抽象方法的类必须声明为抽象类。

子类必须重写所有的抽象方法才能实例化,否则子类还是一个抽象类。

Abstract可以用来修饰类和方法,但不能用来修饰属性和构造方法。

Final修饰符

1.用final修饰的类,不能再被继承。

2.用final修饰的方法,不能被子类重写。

3.用final修饰的变量(包括成员变量和局部变量将变成常量,只能赋值一次。

4.使用final修饰引用型变量,变量的值是固定不变的,而变量所指向的对象的属性值是可变的。

Final和abstract比较

Abstract可以用修饰类和方法,不能用来修饰属性和方法。

Final可以用来修饰类、方法和属性,不能修饰构造方法。

Abstract不能和private同时修饰一个方法。

Abstract不能和static同时修饰一个方法。

Abstract不能和final同时修饰一个方法和类。

第三章多态

多态的概念

多态(Polymorphism是具有表现多种形态的能力的特征。

同一个实现接口,使用不同的实例而执行不同的操作。

子类转换父类时的规则

1.将一个父类的引用指向一个子类的对象,称为向上转型(upcasting,自动进行类型转换。

2.此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法。

3.此时通过父类引用变量无法调用子类特有的方法。

实现多态的三个条件

1.继承的存在。

(继承是多态的基础,没有继承就没有多态。

2.子类重写父类的方法(多态下调用子类重写后的方法)。

3.父类引用变量指向子类对象(子类到父类的类型转换)。

父类到子类的转换

将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型。

向下转型后可以访问子类特有的方法。

必须转换父类指向的真实子类类型,否则将出现类型转换异常ClassCastException。

Instanceof运算符

对象instanceof类或接口

该运算符用来判断一个对象是否属于一个类或者实现一个接口,结果为true或false。

在强制类型转换之前通过instanceof运算符检查对象的真实类型,然后再进行相应的强制转换,这样就可以避免类型转换异常,从而提高代码健壮性。

使用instanceof时,对象的类型必须和instanceof的第二个参数所指定的类或接口在继承树上有上下级关系,否则会出现编译错误。

PublicclassTestPoly2{

Publicstaticvoidmain(String[]args}{

Petpet=newPenguin(“楠楠”,”Q妹”;

Pet.eat(;

If(petinstanceofDog{

Dogdog=(Dogpet;

dog.catchingFlyDisc(;

}elseif(petinstanceofPenguin{

Penguinpgn=newPenguin(;

pgn.swimming(;

第四章接口

接口的实现和继承

1.接口和类、抽象类是一个层次的概念,命名规则相同。

如果修饰符是public,则该接口在整个项目中可见。

如果省略修饰符,则该接口只在当前包可见。

2.接口中可以定义常量、不能定义变量。

接口中属性都会自动用publicstaticfinal修饰,即接口中属性都是全局静态常量。

接口中的常量必须在定义时指定初始值。

3.接口中所有方法都是抽象方法。

接口中方法都会自动用publicabstract修饰,即接口中只有全局抽象方法。

4.和抽象类一样,接口同样不能实例化,接口中不能有构造方法。

5.接口之间可以通过extends实现继承关系,一个接口可以继承多个接口,但接口不能继承类。

6.一个类只能有一个直接父类,但可以通过implements实现多个接口。

类必须实现接口的全部方法,否则必须定义抽象类。

类在继承父类的同时又实现了多个接口时,extends必须位于implements之前。

接口体现了约定和实现相分离的原则,通过面向接口编程,可以降低代码间的耦合性,提高代码的可扩展性和可维护性。

面向接口编程意味着:

开发系统时,主体构架使用接口,接口构成系统的骨架,这样就可以通过更换实现接口的类来实现更换系统。

在C#中使用接口

1.接口之间可以通过冒号”:

”实现继承关系,一个接口可以继承多个接口,但接口不能继承类。

类只能继承一个类,但可以实现多个接口,使用冒号”:

”来继承类和实现接口。

2.接口定义零个或多个成员,成员主要是方法,属性和索引器。

接口中不能包含常量、变量或构造方法,也不能包含任何静态成员。

3.接口中成员访问权限是public,定义接口时显示指定任何修饰符都是非法的。

4.按照惯例,C#中接口的名字以大写字母“I”开头。

C#中接口中成员主要是方法、属性和索引器。

接口中不能包含常量、变量、构造方法和任何静态成员。

定义接口时显示指定任何修饰符是非法的。

第八章异常

异常的概念

异常就是在程序的运行过程中所发生的不正常的事件。

常见的异常类型

异常

说明

Exception

异常层次结构的根类

ArithmeticException

算数错误情形,如以零作除数

ArrayIndexOutOfBoundsException

数组下标越界

NullPointerException

尝试访问null对象成员

ClassNotFoundException

不能加载所需的类

InputMismatchException

欲得到的数据类型与实际输入的类型不匹配

IllegalArgumentException

方法接收到非法参数

ClassCastException

对象强制类型转换出错

NumberFormatException

数字格式转换异常

Throw和throws的区别表现在以下三个方面

1.作用不同:

throw用于程序员自行产生并抛出异常,throws用于声明在该方法内抛出了异常。

2.使用的位置不同:

throw位于方法体内部,可以作为单独语句使用。

Throws必须跟在方法参数列表的后面,不能单独使用。

3.内容不同:

throw抛出一个异常对象,而且只能是一个。

Throws后面跟异常类,而且可以跟多个异常类。

异常分类

Throwable类:

所有异常类型都是Throwable类的子类,它派生两个子类:

Error和Exception。

Error类:

表示仅靠程序本身无法恢复的严重错误,比如说内存溢出动态链接失败,虚拟机错误。

应用程序不应该抛出这种这种类型的对象(一般是由虚拟机抛出)。

假如出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。

所以在进行程序设计时,应该更关注Exception类。

Exception类:

由java应用程序抛出和处理的非严重错误,比如所需文件找不到、网络连接不通或中断、算术运算出错(如被零除、数组下标越界、转载了一个不存在的类,对null对象操作、类型转换异常等。

它的各种不同的子类分别对应不同类型的异常。

运行时异常:

包括RuntimeException及其所有子类。

不要求程序必须对它们做出处理。

Checked异常(非运行时异常:

除了运行时异常外的其他由Exception继承来的异常类。

程序必须捕获或者声明抛出这种异常,否则会出现编译错误,无法通过编译。

处理方式包括两种:

通过try-catch在当前位置捕获并处理异常,通过throws声明抛出异常交给上一级调用方法处理。

日志及分类

SQL日志:

记录系统执行的SQL语句。

异常日志:

记录系统运行中发生的异常事件。

业务日志;

用于记录系统运行过程,例如用户登录,操作记录。

Log4j配置文件

1.输出级别

Log4j.rootLogger=debug、stdout、logfile

Fatal:

指出每个严重的错误事件将会导致应用程序的退出。

Error:

指出虽然发生错误事件,但仍然不影响系统的继续运行。

Warn:

表明会出现潜在错误的情形。

Info:

在粗粒度级别上指明消息,强调应用程序的运行过程。

Debug:

指出细粒度信息事件,对调式应用程序是非常有帮助的。

各个输出级别优先级为:

Fatal>

error>

warn>

info>

debug

2.日志输出目的地Appender

其中、stdout、logfile指的是日志输出目的地名字。

ConsoleAppender:

输出日志事件到控制台。

FileAppender:

输出日志事件到一个文件。

3.日志布局类型Layout

HTMLLayout:

格式化日志输出为HTML表格。

SimpleLayout:

以一种非常简单的方式格式化日志输出,它打印级别level,然后跟着一个破折号”-----“,最后是日志消息。

PatternLayout:

根据指定的转换模式格式化日志输出,从而支持丰富多样的输出格式。

需要配置layout.ConversionPattern属性,如果没有配置该属性,则使用默认的转换模式。

4.转换模式ConversionPattern

%d:

用来设置输出日志的日期和时间,默认格式为ISO8601。

也可以在其后指定格式,比如%d{yyyy-MM-ddHH:

mm:

ss},输出格式类似于2010-03-0917:

51:

08。

%m:

用来输出代码中指定的消息。

%n:

用来输出一个回车换行符。

%I:

用来输出日志事件的发生位置,包括类名、发生的线程,以及在代码中的行数。

%p:

用来输出优先级。

%F:

用来输出文件名。

%M:

用来输出方法名。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1