2021-09-13

本文详细介绍了Java中的面向对象特性,包括封装、继承和多态。封装通过类来保护数据和行为,继承允许子类继承父类的属性和方法,多态则表现为同名方法的不同功能。此外,还阐述了类的定义、对象的创建与使用、静态变量和方法以及包的管理。文章最后讨论了成员修饰符的作用,如public、private、final和abstract等。
摘要由CSDN通过智能技术生成

JAVA 000(类和对象)

面向对象程序设计(OOP)核心是引入了对象的概念,一种典型的设计思想是——“抽象”:将现实世界中的实体理解为由属性实施行为的统一体,即对象。属性表示对象的性质,行为则定义了对象可以提供的外部服务。面向对象程序设计中其他三个典型特征是:继承,封装,多态。

1. 封装

封装是一种将操作和操作所涉及的数据捆绑在一起,使其免受外界干扰和误用的机制。在Java中,最基本的封装单元是类,一个类定义为具有相似特征(属性和行为)对象的一种抽象。

2. 继承

继承是指一个新的类继承原有类的基本特征,并可增加新的特征。原有的类称为父类或基类,新的类称为子类或派生类。子类包含父类的所有数据和方法,还可以增加新的属性和方法。继承具有传递性。

3. 多态

多态性是指类中同一名称的行为(方法)可以有多种不同的功能,或者相同的接口有多种实现方法,其实现包括静态的(重载)和动态的(虚函数)

一、类

类是Java中最重要的复合数据类型,是组成Java程序的基本数据元素,它封装了一类对象的属性和改变这些属性的方法,是这一类对象的原型,即类为形象化描述,对象是实例。使用时,用户必须先定义类,并生成该类的实例,然后才能通过该实例访问其成员变量和方法。

基本形式:
[类修饰符] class 类名 [extends 父类名] [implements 接口名]
{
…//类体,包括定义类的成员变量和方法
}

父类名只能一个,接口名可多个。接口实际上是一种特殊的类,它所定义的方法一般为空,需要在派生类中实现该方法。

1. 定义成员变量
格式:
[修饰符]类型 成员变量名列表;

成员变量的修饰符如public、protected、private、final和static等。

2. 定义成员方法
格式:
[修饰符] 返回值类型 方法名 ([参数列表])
{
	方法体
}

返回值可以是任意基本类型或类,如果方法不返回任何值,则声明为void(空)。
Java中有两种特殊的成员方法:构造方法和main()方法。
构造方法要求方法名必须与类名相同,而且不能有返回值(void)也不行;main()方法通常是一个Java应用程序的执行起点,其定义格式为:

public static void main(String args [])

其中,main为方法名,args为形参,类型为字符串数组,void表示main方法无返回值。

3. 方法重载

Java允许使用同一个名字去定义多个方法,只要方法的参数列表不同,即参数的数量、类型不完全相同。返回值类型不同不能用来区分重载

二、对象

1. 实例化对象
格式:
类名 对象名 = new 类名 ([参数列表])

关键字new为每一个对象分配一片内存区域,并返回该对象的一个引用(可以理解为该对象的内存首地址)。
**当运算符==和 != 用于两个对象的比较时,它判断的是两边是否为同一对象(地址空间相同)equals()方法可以判断值。

2.初始化

新建一个对象时,系统自动完成一下3项工作:一为对象分配不同的内存空间;二如果类定义时有初值,使用该类对成员变量进行初始化;如果没有初值,可以使用默认值;三自动调用构造方法,如果构造方法有多个,则根据参数的类型、个数等决定调用哪种构造方法。

3.使用对象

Java中对象的使用包括对成员变量的引用和成员方法的调用,它们都是通过点运算(.)来实现的,

格式:
对象名.成员变量
对象名.成员方法名(实参列表)

方法调用包括:传值调用和引用。传值调用的特征是形参一般为基本类型的变量,实参单向的传值给形参,即形参的值不会改变实参的值;当实参为复合数据类型时,Java自动采用引用的方式传参,这时实际传递的是实参数组的引用,对形参改变的同时也会改变实参。

4.使用静态变量和方法

如果所有对象希望共享同一变量,则可以在变量定义前加上一个关键字static,这样就定义了一个类变量,也称静态变量。静态变量不在属于某个实例或对象,而是属于整个类。

eg.
static int no; //定义静态变量no

由于静态变量和静态方法都属于整个类,因此可以直接通过类名访问,而无须创建该类的实例,

格式:
类名.静态变量名;
类名.静态变量名([实参列表])

三、包

在一个包中,类不可以重名,但是不同的包中允许相同的类名出现,使用“包名+类名”的方式可以达到有效管理的目的。

1.包的定义

只需要在源文件的起始处添加一条关键字package的语句即可,则任何在该文件中定义的类都属于指定的包。package语句指定了一个类存放的命名空间,如果没有package关键字,则类会被放入一个默认的包中,该包没有名字。

格式:
package [包名1.[包名2.[包名3]]]

用 . 指明包的层次。

2.包的引入

通过关键字import引入包中的任何类型,并使得这些类在整个程序中可见。

import基本格式:
import [包名1.[包名2.[包名3.]]](类名|*)

使用

格式:
import java.util.* //引入java.util包中的所有类
import java.applet //引入java.applet包中的类Applet

四、类及成员修饰符

修饰符包括public、protected、private、final、abstract和static等。

1.

Java类的成员变量和方法访问权限如下表:

修饰符同一个类同一个包不同包中的子类不同包中的非子类
private*
default**
protected***
public****
2.final

被final修饰的元素不允许再修改。例如,用final修饰的类(最终类)不能再有子类;用final修饰声明的方法(最终方法)不能再被重写;用final声明的成员变量(常量)初始化后,不能再被重新赋值或修改。

3.abstract

关键字abstract修饰的类称为抽象类,抽象类是一种没有完全实现的类。不能用它实例化任何对象,它的主要用途是用来描述一些概念性的内容,然后在子类中具体去实现这些概念,这样可以提高开发效率,统一用户接口,所以抽象类更多的是作为其他类的父类。
抽象类中可以含有抽象方法,抽象方法是用abstract修饰的方法,抽象方法只有方法的返回值、名称和参数列表,没有方法体,它必须在子类中具体实现该方法。
如果一个类包含抽象方法,则必须被定义为抽象类,但抽象类不一定要包含抽象方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值