Advertisement

Java期末复习知识点总结

阅读量:

目录

一、面向对象程序设计

1.类和对象

1.1对象的概念

1.2类的概念

1.3类和对象的关系

2.定义类和创建对象

2.1类的声明

2.2类的成员

2.3创建对象

2.4构造方法

2.5this关键字

3.方法

3.1方法的重载

3.2方法间的参数传递

4.静态属性和静态方法

4.1静态变量

4.2静态方法

5.封装

5.1包

5.2访问控制权限

5.3封装

6.继承

6.1子类对父类构造方法的继承

6.2子类对父类构造方法的调用

6.3方法重写

6.4子类和父类之间的转换

7.多态

8.抽象类和接口

8.1抽象类

8.2接口

8.3抽象类和接口的比较


1、类与对象

1.1 对象的概念:

对象(Object)是现实世界中世纪存在的某个具体事物。(对象是类的实例)

1.2 类的概念:

把具有相同特征及行为的一组对象称为一类对象。(类是抽象的)

1.3类和对象的关系:

对象是具体的一个个实实在在的事物,类是这些具体事物(对象)的原型,是这些具体事物(对象)一般特征的描述。类与对象的关系如同模具和铸件的关系,类是创建对象的模具,而对象则是由类这个模具制作出来的铸件。


2、定义对象和创建对象

2.1类的声明

在Java中类的声明格式如下

复制代码
>       1. [类的修饰字]class 类名称 [extends 父类名称][implements 接口名称列表]

>  
>       2. {
>  
>       3.     变量定义及初始化;
>  
>       4.     方法定义及方法体;
>  
>       5. }
>  
>  
>

(1)类的修饰字:[public] [abstract] [final]。

public:类的访问控制符。java类具有两种访问控制符:public和default。public允许类具有完全开放的可见性,所有其他类都可以访问它,省略public则为default可见性,即只有位于用一个包中的类可以访问该类。

abstract:指明该类为一个抽象类,指该类是一个定义不完全的类,需要被继承,才能实例化创建对象。

final:表明该类为终态类,不能被继承。final不能被修改。(final可以修饰属性(将变量定义为常变量)、方法(方法不能被重写)和类(类不可以被继承))

(2)class是创建类所使用的关键字。

(3)是类的名称。

(4)包含属性和方法的声明

(5) extends为类继承,superClassName为父类。如果在类定义时没有指定继承关系,则自己从Object类派生该类。

(6) implements为实现接口,interfaceNameList为被实现的一个或多个接口名。

2.2类的成员

类的成员包括属性(变量;静态特征)和方法(动态行为)两个部分,定义格式如下:

(1)成员变量定义格式:

复制代码
    [变量修饰字]变量数据类型 变量名1,变量名2[=变量初值]...;

变量修饰符可以为[public | protected | private] [static] [final] [transient] [volatile]。

成员变量的类型可以是Java中的任意数据类型,包括简单类型、类、接口、数组。

在一个类中的成员变量应该是唯一的。

(2)成员方法定义格式

[方法修饰字] 返回类型 方法名称(参数1,参数2,...)[throws exceptionList]

{

…(statements;) //方法体:方法体的内容

}

  • 方法修饰字可以为[public | protected | private] [static] [final] [abstract] [native] [synchronzied]。
  • 返回类型可以是任意的Java数据类型,当一个方法不需要返回值是,返回类型为void。
  • 参数的类型可以是简单数据类型,也可以是引用数据类型(数组、类或接口),参数传递方式是值传递。
  • 方法体是对方法的实现。它包括局部变量的声明以及所有合法的Java指令。局部变量的作用域只在该方法内部。

【说明:】

Java定义了四种访问级别:public、protected、default和private。访问级别用来控制其他类对当前类的成员的访问。

具有static证明的成员属于静态成员,改成员属于类本身,不需要实例化就可以访问。

final****声明的成员变量为常量,final声明的方法在类继承时不许子类覆盖。

............

2.3创建对象

书中例子用到 Box box=new Box();语句类创建一个对象,new 可以理解为创建一个对象的关键字,通过使用new关键字为对象分配内存,初始化实例变量,并调用构造方法。

2.4构造方法(重点)

(1)构造方法的特征:

  • 方法名同类名。
  • 它不含返回值。(不可以使用void,省略类型)
  • 它不能在方法中用return语句返回一个值。

(2)构造方法的分类

一个类至少有一个构造方法。一类是你不提供则系统提供(不带参数的构造方法 <也称为默认构造方法>)

你若提供则系统不再提示默认的构造方法。

(3)构造方法的作用: 对属性赋值。

参数列表:有几个属性就带几个参数。

2.5this关键字

this表示当前类的对象。

this用法:防止同名覆盖(局部变量覆盖全局变量);主动调用成员。

this关键字的用法:

  • 访问当前对象的数据成员:this.数据成员
  • 访问当前对象的成员方法:this.成员方法
  • 当有方法重载的构造方法时,用来引用同一个类的其他构造方法:this([参数])

注意: this([参数])必须写在方法体的第一行,否则会出现编译错误。

this();调用构造方法(该构造函数的第1行语句)

this可以调用属性和方法。

2.5对象的生命周期

JVM(解释运行 垃圾回收 跨平台)


3、方法

3.1方法的重载(同名不同参)

(1)成员方法的重载

**重载方法的参数表必须不同 。**参数不同主要是参数类型、顺序和个数不同。(也可以理解为,参数不同或相同位置参数类型不同)返回值类型无要求。

(2)构造方法的重载

当一个类有多个重载的构造函数时,他们之间可以相互调用,这种调用通过关键字this实现,同时this调用语句必须是构造函数中的第一个执行语句


4、静态属性和静态方法

静态属性和静态方法:可以用类名调用也可以用对象名调用。

4.1静态变量

静态变量的特点是它不是属于某个对象的,而是属于整个类的,他们在类被载入的时候就被创建,只要类存在,static变量就存在,因此静态变量不保存在某个对象的存储单元中,而是保持在类的公共内存单元中,任何一个类的对象都可以访问它,修改它。

静态属性不可以调用非静态属性。属性通常是公有的,方法通常是私有的。

静态变量的定义格式如下:

static 类型变量名;

静态变量调用:

  • 可以通过**“类名.成员名”** 的方式直接访问
  • 也可以通过**“对象名.成员名”** 的方式进行访问

4.2静态方法

静态方法和静态属性一样的是属于整个类,不是属于某个对象的。调用静态方法可以通过**“类名.成员名”** 的方式进行访问,也可以先创建对象,通过**“对象名.成员名”** 的方式进行访问。

静态方法在使用过程中要注意如下几点:见Java书P73-74。


5、封装

5.1包

Java语言引用包(package)的概念来管理类。

(1)包的概念

包是Java语言提供的一种区别类名的机制,是类的组织方法。在物理存储时,包就对应一个文件夹,包中还可以包含包,称为等级。同一个包中的类名不能重复,不同包中的类名可以相同 ,在引用某一个包的某一个类时,不但要指定类名,而且要指定报名,通过“.”类表示包的层次,如java.util.Date。

(2)创建包

格式:

package 包名1[.包名2[.包名3]...];

(3)引用包

要在当前类中引用不同包中别的类(该类可能是系统类也可能是自己定义的类),首先必须将该类引用过来,否则编译不通过。如果要使用别的包中的类,必须在源程序中用import语句导入所需要的类。

import语句的格式为:

import包名1[.包名2[.包名3]...].类名|*;

(4)访问控制权限

关键字 同一个类中 同一个包中 不同包中的子类 不同包中的非子类(任意类)
private(私有)
default(没有修饰字)
protected(保护)
public(公共)

6、继承(重用)

继承:(extends super 方法的重写 父类引用)

Java只支持单继承,不允许多重继承,即一个类只能有一个父类,但是可以由多层继承,即一个类可以继承某一类的子类 ,如类B继承了类A,类C又可以继承类B,那么类C也间接继承了类A。Object类是Java类层中的最高层类,是所有类的超类。

继承通过在类的声明中加入extends字句来创建一个类的子类:

public class SubClass extends SuperClass{

........

}

如果默认extends字句,则该类为java.lang.Object的子类,即所有类在没有通过extends关键字指定其父类时,则自动默认继承Object。

子类可以继承父类中访问权限设定为:public 、protected、default(父类和子类在同一个包中)成员变量和方法,但是不能继承访问权限为private的成员变量和方法。

注意:子类写了构造方法,则第一行必须调用父类的构造方法,默认super(超类)

super:隐式调用(系统给的);显示调用(自己写的)

6.1子类对父类构造方法的继承

子类无条件地继承父类不带参数的构造方法,当通过子类构造方法创建子类对象时,先执行父类不含参数的构造方法,在执行子类的不带参数的构造方法。

给父类赋值:通过构造方法给所以属性赋值。

6.2子类对父类构造方法的调用

如果子类调用父类的构造函数,则通过super()关键字类实现,但注意super()必须是第一行语句。

6.3方法重写

子类覆盖父类的同名同参同返回的方法(不能降级)

子类也可以重写或覆盖父类中的属性。

6.4子类和父类之间的转换

(1)子类转换成父类

(2)父类转换成父类

父类对象转换成子类对象时,必须要强制转换。

转换格式:

(子类名)父类对象

父类对象向子类对象强制转换时,通常用运算符instancedof 判断要转换的对象是否为子类对象,如果不是则不能转换,否则程序会产生错误。


7、多态(父类的引用+方法重写)

一种接口多种表现(动态编译)

父类引用:可以引用子类对象,但子类不可以引用父类对象。


8、抽象类和接口

8.1抽象类

(1)抽象类可以拥有没有方法体的抽象成员 ,抽象成员的具体代码是在其派生类(子类)中实现的。

(2)抽象类不一定有抽象方法。

(3)抽象类不能创建对象。(不能实例化)

(4)只有抽象类才有抽象方法。

(5)若父类中有抽象方法,继承时要实现方法重写。

(6)关键字:abstract。

(7)抽象类中可以有非抽象类的方法。

(8)抽象类可以有构造方法。

(9)抽象方法的类一定是抽象类,但抽象类中不一定都是抽象方法。

(10)抽象类可以继承非抽象类,也可以包含main()方法。

(11)实现一个接口,但没有完全实现接口中包含的抽象方法的类是抽象类。

(12)继承一个抽象类,但没有完全实现父类包含的抽象方法的类是抽象类。

(13)直接定义了一个抽象方法的类是抽象类。

(14)抽象类的非抽象子类必须实现父类中的抽象方法。

8.2接口

如果一个抽象类中的多有方法都是抽象的,就可以将这个类用另外一种方式来定义,也就是接口定义。

接口(interface)就是方法定义和常量值的集合。从本质上讲,接口就是一种特殊的抽象类,这种抽象类只包含常量和方法的定义,而没有方法的实现。

(1)接口的定义

[public] interface interfaceName [extends SuperInterfaceList]

{

.........//常量定义和方法定义

}

接口命名要符合Java标识符命名规则。接口与一般的类一样,也具有成员变量与成员方法,但是成员变量一定要赋值,且不能被修改若省略成员变量修饰符,系统默认为public、static、final;而其成员方法必须是抽象方法,方法钱即使省略修饰符,系统仍然默认public abstract。

(2)实现接口

接口和抽象类相似,只能被继承,不能被实例化, 一旦继承一个接口不叫继承,而叫实现。用implements关键字类表示一个类实现某个接口。一个类在实现一个接口时,则该类可以使用接口中的定义的常量,但必须实现接口中定义的所有方法。

(3)接口的继承

与类相似,接口也有继承性。定义一个接口时,可以通过extends 关键字声明该新接口是某个已存在接口的子接口,它讲继承父接口的所有变量和方法。**与类的继承不相同的是一个接口可以有一个以上的直接父接口,它们之间用逗号隔开,形成父接口列表。新接口将继承父接口中的变量与方法。如果子接口中定义了与父接口同名的常量或者相同的方法,**则父接口中的常量被隐藏,方法被重写。

(4)接口的作用

利用接口可以实现多重继承,即一个类可以实现多个接口,在implements子句中用逗号分隔。Java不支持多继承,即一个类只能有一个父类,利用接口可以达到多继承的效果。

接口的作用和抽象类相似,只定义原型,不直接定义方法的内容。

8.3抽象类和接口的比较

(1)接口中定义的变量均是公有的,静态的,最终常量(public static final)。接口中定义的方法(即使没有特别声明)均为抽象的和公共的(public abstract)而抽象类没有要求

(2)实现接口时需要实现接口中定义的所有方法;抽象类的子类可以全部重写所有抽象方法;也可以不重写,此时子类还是一个抽象类。

(3)接口不能有构造方法,抽象类可以有

(4)接口不能有静态方法,抽象类可以有

(5)接口不能有方法体,抽象类可以有

(6)接口可以实现多重继承

(7)接口不可以实现另一个接口。(但是接口可以继承接口,并可以继承多个接口,但是不能实现接口。)

(8)一个类可以继承抽象类的同时实现一个或多个接口。


总结

以上是关于java面向对象程序设计的内容,总结可能不完善,仅供参考,方便记忆。

全部评论 (0)

还没有任何评论哟~