1、类和对象
java是面向对象的程序设计语言,类是面向对象的重要内容,我们可以把类当成一种自定义数据类型,
可以使用类来定义变量,这种类型的变量统称为引用变量。也就是说,所有类是引用数据类型。
1、1类
Java语言是面向对象的程序设计语言,类和对象是面向对象的核心。Java语言提供了对创建类和对象简单的语法支持。
Java语言里定义类的简单语法如下:
[修饰符] class 类名{
<span style="white-space:pre"> </span>零到多个构造器定义...
<span style="white-space:pre"> </span>零到多个属性...
<span style="white-space:pre"> </span>零到多个方法...
}
例:
public class Animal{
<span style="white-space:pre"> </span>String name;
int weight;
public Bird(int weitht){
this.weight = weight;
}
public void shout(){
System.out.println("叫。。");
}
}
修饰符可以是public、final、abstract,或者完全省略这三个修饰符。类名只要是一个合法的标识符即可,但从程序的可读性
方面来看,Java类名必须是一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之间
不要使用任何分隔符。
属性(成员变量):用于定义该类的实例所包含的状态数据。
方法:用于定义该类或该类的实例的行为特征或者功能实现。
构造器:用于构造该类的实例,Java语言通过new关键字来调用构造器,从而返回该类的实例。
构造器是一个类创建对象的根本途径,如果一个类没有构造器,这个类通常无法创建实例。因此,Java语言提供了一个功能:
如果程序员没有为一个类编写构造器,则系统会为该类提供一个默认的构造器,一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器。
1、1、1属性
定义属性语法格式:
[修饰符] 数据类型 属性名 [= 初值];
例:
int weight;
修饰符:修饰符可以省略,也可以是public、protected、private、static、final,其中public、protected、private三个最多只能出现其中之一,可以
与static、final组合起来使用。
数据类型:可以是Java语言允许的任何数据类型,包括基本类型和引用类型。
属性名:只要是一个合法的标识符即可,但从程序的可读性来看,属性名应该由单词连缀而成,第一个单词首字母小写,后面每个单词首字母大写,
其他字母全部小写,单词之间不要使用任何分隔符。
1、1、2方法
定义方法的语法格式:
[修饰符] 方法返回值类型 方法名(形参列表){
<span style="white-space:pre"> </span>//由零条或多条可执行性语句组成的方法体
}
例:
public void shout(){
System.out.println("叫。。");
}
修饰符:可以省略,也可以是public、protected、private、static、final、abstract,其中public、protected、private三个最多只能出现其中之一,
abstract和final最多只能出现其中之一,它们可以与static组合起来使用。
方法返回值类型:可以是基本数据类型和引用数据类型。
方法名:与属性命名规则基本相同,但通常以英文中的动词开头。
形参列表:用于定义改方法可以接受的参数。
方法重载
Java允许同一个类里定义多个同名方法,只要形参列表不用就行。如果同一个类中包含了两个或两个以上方法的方法名相同,但形参列表不用,
则被称为方法重载。
1、1、3构造器
构造器是一个特殊的方法,定义构造器的语法与定义方法的语法格式很像。
[修饰符] 构造器名(形参列表){
<span style="white-space:pre"> </span>//由零条或多条可执行性语句组成的构造器执行体
}
修饰符:可以省略,也可以是public、protected、private其中之一。
构造器名:构造器名必须和类名相同。
形参列表:和定义方法形参列表格式完全相同。
注:构造器既不能定义返回值类型,也不能使用void定义构造器没有返回值。
1、2对象
创建对象的根本途径是构造器,通过new关键字来调用某个类的构造器即可创建这个类的实例。
//定义一个Animal类型的变量,通过new关键字来调用Animal类的构造器,返回一个Animal实例
Animal animal = new Animal();
1、2、1对象的this引用
java提供了一个this关键字,this关键字总是指向调用该方法的对象。
1)构造器中引用该构造器正在初始化的对象。
2)在方法中引用调用该方法的对象。
this关键字最大的作用就是让类中一个方法,访问该类里的另一个方法或实例变量。
2、修饰符
2、1访问控制修饰符
public:公共访问权限。同一个工程下的所有类都可以访问。
protected:子类访问权限。既可以被同一个包中的其他类访问,也可以被不同包中的子类访问。
default(默认):包访问权限。同一个包下的所有类都可以访问。
private:当前类访问权限。只能在当前类的内部被访问。
2、2static
static代表其修饰的成员变量和方法都属于这个类。
对于static修饰的方法而言,则可以使用类来直接调用该方法,如果在static修饰的方法中使用
this关键字,则这个关键字就无法指向合适的对象。所以,static修饰的方法中不能使用this引用。
由于static修饰的方法不能使用this引用,所以static修饰的方法不能访问不使用static修饰的普通
成员,因此Java语法规定:静态成员不能直接访问非静态成员。
2、3final修饰符
final关键字可用于修饰类、变量和方法。
final修饰成员变量时,必须由程序员指定初始值。
final修饰变量时让变量成为常量;修饰方法,让方法不能被子类重写;修饰类时,让泪不能被继承。
2.4abstract抽象。抽象方法,没有方法体。抽象类时,可以有抽象方法,也可以没有。抽象类不能
实例化,只能被继承。
3、继承
继承时面向对象的三大特征之一,也是实现软件复用的重要手段。Java的继承具有单继承的特征,
每个子类只有一个直接父类。
Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类称为父类。
Java里子类继承父类的语法格式:
修饰符 class SubClass extends SuperClass{
<span style="white-space:pre"> </span>//类定义部分
}
super限定
如果需要在子类方法中调用父类被覆盖的实例方法,则可使用super限定来调用父类被覆盖的实例方法。
在一个构造器中调用另一个重载的构造器使用this调用来完成,在子类构造器中调用父类构造器使用super调用来完成。
4、接口
接口指用interface关键字修饰的一种类型:接口类型。他用于描述一系列功能性的方法,并让子类实现。
接口里不能包含普通方法,接口里的所有方法都是抽象方法。
接口里定义的内部类、内部接口、内部枚举默认都采用public static和final三个修饰符。
接口里不能有构造方法,因此接口类型不能直接创建对象。
5、内部类
在一个类的内部定义的类称为内部类。内部类允许把一些逻辑相关的类组织在一起。为了叙述方便,我们就把最外层的类称为
顶层类,内部的类叫内部类。