一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。
包
包:把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
在同一个包中的类可以直接访问其中的类,一个类要想访问其他包中的类,可使用import语句完成。
包的格式
package 包名;
引用其他包中的类格式
import 包名.类名;
对象
对象:对象是类的一个实例,有状态和行为。
对象声明的格式
类名 对象名字;
创建对象:使用new运算符和类的构造方法为声明的对象分配变量。
使用对象: 对象操作自己的变量(体现对象的属性)对象调用类中的方法(体现对象的行为) 使用“.”来实现
类
类:类是一个模板即“数据类型”,它描述一类对象的行为和状态。
类声明的变量被称作对象,即类是用来创建对象的模板。
类的实现包括分为类声明和类体。
类的格式
class 类名{
类体的内容
}
类体的内容由两部分构成:变量声明和方法定义。
注意:类的声明必须是合法的标识符。
方法
方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
方法的定义分为方法的声明和方法体
方法的格式
数据类型 方法名称(参数列表){
方法体的内容;
}
注意:类中方法定义可以理解为C++/C中函数定义。
方法体的内容包括局部变量的声明和Java语句。
变量
成员变量:类体中方法外变量声明部分所声明的变量。
局部变量:方法体中声明的变量和方法的变量。
实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
变量的类型:可分为基本类型和引用类型。
基本类型:整型、浮点型、字符型;
引用类型:数组、对象和接口。
变量的有效范围:成员变量在整个类内都有效。方法的参数在整个方法内有效,方法内的局部变量从声明它的位置之后开始有效。
其有效性与它在类体中书写的先后位置无关。
构造方法
构造方法:方法名必须与所在类的名称完全相同,且没有类型。允许一个类中编写若干构造方法,但必须保证参数不同,即参数的个数不同,或者是参数的类型不同。
如类中未编写构造方法,系统提供一个默认构造方法
该默认构造方法是无参数的,且方法体中没有语句。
如果类定义了构造方法,那么Java将不再提供默认构造方法 。
注意:构造方法没有类型
如果类定义了构造方法,那么Java将不再提供默认构造方法 ?
原因:默认构造方法是无参数的,且方法体中没有语句。若希望调用构造方法实现一些功能则默认构造方法已经无法满足要求了故而我们需要自己定义构造方法来替代默认构造方法。
父类与子类
由继承而得到的类称为子类,被继承的类称为父类(超类)。
Java不支持多重继承,一个子类只能有一个父类。
使用关键字extends来定义一个类的子类。
子类的格式
class 子类名 extends 父类名 {
…
}
方法重载与多态
方法重载(与C++/C中的重载用法类似):一个类中可以有多个方法具有相同名字,但这些方法的参数必须不同,即或者是参数个数不同,或者是参数类型不同。
覆盖
子类通过覆盖可以隐藏已继承的方法,称为方法覆盖。
方法覆盖:子类中定义的方法类型和父类方法的类型一致或其子类型,且方法名、参数个数、参数类型也完全相同。
注意:子类定义覆盖方法必须和父类方法类型保持一致。
如果两个方法名相同,且参数也相同,但类型不一致,这将编译出错。
覆盖父类方法时,只可提高访问权限。
访问权限从高到低依次为:
public、protected、friend 、private
接口
利用interface定义接口,一个类可实现多个接口。
接口的格式
interface 接口名{
接口体
}
接口体中只有抽象方法;
接口体中只有常量,且访问权限一定是public、final和static的;
允许省略public、final和static修饰符
所有抽象方法访问权限一定都是public的
允许省略public abstract修饰符
类通过使用关键字implements声明实现一个或多个接口。
super关键字
用super操作被隐藏的成员变量和方法
比如:
super.x、super.play()//访问和调用被子类隐藏的成员变量x和方法play().
使用super还可以调用父类的构造方法。