一个程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。
Java对象和类
- 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为:摇尾巴、叫、吃等。
- 类:类是一个模板,它描述一类对象的行为和状态。
- 方法:方法是行为,一个可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
- 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
一个类中可以包含以下类型的变量:
- 局部变量:在方法、构造方法或语句块中定义的变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
- 成员变量:定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
- 类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。
构造方法
每个类都会有一个构造方法,如果没有显式的构造方法,Java编译器会为该类提供一个默认的构造方法。在创建一个对象的时候,必须要调用一个构造方法,一个类可以有多个构造方法。
构造方法具有以下特点:
- 构造方法必须与类名相同,并且不能有返回值(返回值也不能是void)
- 每个类可以有多个构造函数。如果开发人员没有创建构造函数,程序会自动执行默认的构造函数,默认的构造函数没有参数,不会执行任何代码。如果开发人员提供了构造函数,那么编译器就不会创建构造函数了。
- 构造函数可以有0、1、2个以上的函数。
- 构造函数伴随着new一起调用。
- 构造函数主要完成对象的初始化工作。
- 构造函数不能被继承,因此,它不能被覆盖,但是构造函数能被重载,可以使用不同的参数个数或参数类型类定义多个构造函数。
- 子类可以通过super关键字来显式调用父类的构造函数,如果父类没有提供无参数的构造函数,子类的构造函数中必须显式地调用父类的构造方法。如果父类提供了无参的构造函数,子类的构造函数就可以不显式地调用父类的构造函数。
- -
创建对象
对象是根据类创建的。new一个对象
- 声明:声明一个对象,包括对象名称和对象类型。
- 实例化:使用关键字new来创建一个对象
- 初始化:使用new创建对象时,会调用构造方法初始化对象。
Java类
public类、抽象类、final类、内部类、匿名类
Java包
包主要用来对类和接口进行分类。
Java标识符
Java所有的组成部分都需要名字。类名、变量名以及方法名都称为标识符。
- 所有表之都都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
- 首字符之后可以使任何字符组合
- 关键字不能用作标识符
- 标识符是大小写敏感的
- 合法标识符举例:age、$salary、_value、__1_value
- 非法标识符举例:123abc、-salary
Java修饰符
像其他语言一样,Java可以使用修饰符来修类中方法和属性,主要有两类修饰符:
- 可访问修饰符:default, public , protected, private
- 不可访问修饰符: final, abstract, strictfp
Java变量
数组是储存在对上的对象,可以保存多个同类型变量。
Java枚举
枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的bug。
例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯,这就意味着它不允许顾客点出了这尺寸外的果汁。
继承
一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。 is-a的关系。
利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。
通过使用关键字extends,子类可以继承父类所有的方法和属性,但是无法使用 private(私有) 的方法和属性。
Java只支持单继承(继承基本类和抽象类),但是我们可以用接口来实现(多继承接口来实现),脚本结构如:
public class Apple extends Fruit implements Fruit1, Fruit2{}
instanceof 关键字
可以使用 instanceof 运算符来检验Mammal和dog对象是否是Animal类的一个实例。
接口
接口可理解为对象间相互通信的协议。
接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。接口只有方法,没有实现。