java复习二—— 类与对象

复习资料:java面向对象程序设计

面向对象的术语

  • 列表内容
  • 对象:
  • 类:oop中最重要的术语。类,也称为模板或蓝本
  • 继承:
  • 接口:
    接口可以描述为类定义的模板,实现接口的类实现该模板。创建一个接口用以声明这些方法、方法的参数及其返回类型。任何实现此接口的类都必须提供这些方法的定义,否则将出现编译错误。
  • 封装,也称为数据隐藏。

面向对象程序设计方法的优点:

*可重用性(抽象、继承、封装等可服务于可重用性)
*可扩展性(面向对象可以设计出高内聚、低耦合的系统结构
*易于管理和维护

java语言与面向对象特性

1)java中的类
在java中,类的所有信息都被存放到一个单独的文件中(.class)。在定义java 类的同时要实现该方法。
2)java的封装:对象的所有特性都装在一个类中。
3)java的继承:不允许定义多继承。即一个子类,只能有一个父类,不能有多个。但java中一个类可以实现多个接口。
4)java的多态
5)java中的垃圾回收机制
在 java中,对象通常是动态产生的,而对象需要内存来保存,所以对象对内存的占用会直接影响程序的效率。对了解决这一个问题,java定义了垃圾回收机制。在垃圾回收过程中,运行时环境实时监测不被使用的内存。当一块内存不再使用的时候,系统自动回收。

类的定义和对象的创建

1)类的基本结构
对象只有程序运行时才存在。
一个完整的程序,应该由若干个类组成,其中只有一个类有main 方法。
一个完整的类,包含构造函数、成员变量、方法等
2)类之间的关系
3)构造函数:
在创建对象时,对象的成员可以由构造函数方法进行初始化。它具有和它所在的类完全一样的名字。一旦定义好一个构造函数,创建对象时会自动调用他。构造函数没有返回值。构造函数的任务是初始化一个对象的内部状态,所以用new操作符创建一个实例后,立刻就会得到一个可用的对象。

构造方法和普通方法不同,是一种特殊的方法,具有以下特点:
*构造方法的方法名必须和类名相同。
*构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
*构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
*构造方法不能由编程人员调用,而要系统调用。
*一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
*构造方法可以重载,以参数的个数、类型、或者排列顺序区分。

4)类成员
定义了类之后,就可以在类体中声明两种类的成员,成员变量和成员方法。
*成员变量的使用:
成员变量就是类的属性。所有类定义建立的对象都共享类的方法,但是它们都拥有各自属性变量的副本。
成员变量,也称为实例变量,其定义写在类体中。
每当创建一个对象后,如果对象有成员变量,则系统会自动为其分配一个初始值。
注意:字符串(String)类型的空引用(null),与空字符串不同,空引用表示没有指向任何对象,而空字符串是内容为空的字符串对象。
5)对象的创建:
由类创建对象的过程称为实例化,每个对象是类的一个实例。

方法

方法的定义

在java中对对象的操作由方法来完成。
(1)参数列表
(2)方法体
关键字return:代表了已经完成方法功能,可以离开此方法返回;如果该方法产生一个值需要返回,则这个值需要放在return语句的后面。
(3)返回值类型
关键字void表示该方法没有返回值。
*关于return语句后的返回值和方法的返回值类型之间有如下5条规则。

  • 可以在具有对象引用返回类型的方法中返回null,但当基本数据类型作为返回类型时,则不可以返回null;
  • 在具有基本数据返回类型的方法内,可以返回任何值。只要其能够自动转换为返回值类型。
    byte——>short——>int——>long——>float——>double
    char———>
    例如,返回值类型为double,返回4可以;
    返回值类型为int,返回4.43则报错;
  • 一定不能在具有“void”返回类型的方法中返回任何内容;
  • 在具有对象引用返回类型的方法内,可以返回任何类型的对象引用,只要返回的引用与返回类型相同或可自动转换为返回类型即可。

java中的方法必须存在于类体中,其只能通过引用进行调用。

方法的重载

在同一个类中,有两个或者两个以上具有相同名称,不同参数序列的方法。
*重载方法的返回类型和访问限制没有特殊限制。

静态成员

在 java中声明类的成员变量和方法时,可以使用static关键字把成员声明为静态成员。静态变量=类变量;
非静态变量=实例变量;
静态方法=类方法;
非静态方法=实例方法;
静态成员最主要的特点是它不属于任何一个类的对象,它不保存在任意一个对象的内存空间中,而是保存在类的公共区域内。所以任何一个对象都可以直接访问该类的静态成员,都能获得相同的数据值。修改时,也在类的公共区域内修改。

(1)静态方法和静态变量
通常情况下,类必须通过它的类对象访问。但是如果希望该方法的使用完全独立于该类的任何对象,可以利用static关键字。
如果一个方法被声明为static,它就能在它的类的任何对象创建之前被访问,而不必引用任何对象。但是在该静态方法中,不能以任何方式引用this或super;
(2)静态变量和静态常量
在java中没有一个直接的修饰符来实现常量,而是通过静态成员变量的方式来实现。

public  static final int X=10;
static  public final int Y=20;
final static public int Z=40;

static表示属于类,不必创建对象就可以使用,因为常量应该不依赖于任何对象,final表示值不能改变。一般用作常量的静态成员变量访问权限都应设置为public,因为常量应该允许所有类或者对象访问。
*static 可以与其他修饰符组合使用,顺序可以任意调换

对于非静态成员变量,系统不会为其分配默认值,必须在构造器完成之前对其初始化。对于静态最终成员变量,系统也不会为其分配默认值,要求开发人员对其进行初始化。但是静态变量属于类,是不能等到构造器运行再初始化的,因为类加载完成之后其值必须可以使用

在java中,静态成员变量的初始化要求在静态语句块结束之前必须完成。即java中静态成员变量的初始化时机有两个,在声明的同时进行初始化或者在静态语句块中进行初始化。
(3)静态成员的访问
静态成员的生命周期比非静态成员长。
*静态方法不能访问非静态成员。
*静态方法访问静态成员,静态成员属于类,只要类存在,静态成员都将存在。
在静态方法中是不能使用this预定义对象引用。因为this代表指向自己对象的引用,而静态方法属于类,不属于对象,其成功加载后,对象还不一定存在,即使存在,也不知道this指的是哪一个对象。
*非静态方法可以访问静态成员。

(4)main()
在java中,main()方法是java应用程序的入口方法。方法名字必须是public static void类型的,方法必须接收一个字符串数组的参数等。

main()方法是由Java虚拟机调用的,所以必须为public,虚拟机调用main()方法时不需要产生任何对象,所以main方法声明为static,且不需要返回值,所以声明为void

public static void main(String []args)

(5)Factory方法
相当于创建实例对象的new

目的:可以在同一个项目中使用名称相同的类。

package <包名>//必须放在源文件的最前面,每个源文件最多只有一个package语言
import <包名>.*;
import <包名>.类名;//放在package之后,类声明之前
import static java.lang.System.*;//引入System类下所有的静态成员,包括方法和成员变量;

成员的访问控制

public >protected>默认>private

封装

*用访问限制修饰符保护成员变量,通常是private;
*建立公有的访问方法,强制调用代码通过这些方法访问成员变量;

利用系统已有的类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值