Java面向对象基本语法

来源:互联网 发布:app停车软件下载 编辑:程序博客网 时间:2024/05/21 22:25

1、类
Java中定义类的简单语法如下:

[修饰符] class 类名{    零个到多个构造器定义    零个到多个成员变量    零个到多个方法}

成员变量用于定义该类或该类的实例所包含的状态数据,方法则用于定义该类或该类的实例的行为特征或者功能实现。构造器用于构造该类的实例,JAVA语言通过new关键字来调用构造器,从而返回该类的实例。

Java中类的继承通过extends实现。子类继承父类的语法如下:

[修饰符]class SubClass extends SuperClass{    //类定义部分}

如果子类继承了父类,子类包含与父类同名方法的现象称为方法的重写。
例如下面定义weapeon类的子类AK47

public class weapeon{    public double weight;    public int reload;    public void shot()    {        System.out.println("突突突");    }}public class AK47 extends weapeon{    public void shot()   //方法的重写    {        System.out.println("biubiu");    }    public static void main(String[] args)    {        AK47 one = new AK47();        AK47.shot();   //将输出biubiu    }}

Java中允许同一个类中定义多个同名方法,只要形参列表不同即可。如果一个类中包含了两个或两个以上方法名相同,但形参列表不同,则被称为方法重载。
例如:

public class testClass{    public void test()    {        System.out.println("无参数");    }    public void test(String msg)    {        System.out.println(msg);    }    public static void main(String[] args)    {        testClass one = new testClass();        one.test();        one.test("Hello");    }}

如果需要在子类方法中调用父类被覆盖的实例方法,则可使用super限定来调用父类被覆盖的实例方法,例如super.say(); 。super不能出现在static修饰的方法中。

2、方法
定义方法的简单语法为:

[修饰符] 方法返回值类型 方法名(形参列表){    //由零条到多条可执行性语句组成的方法体}

修饰符可以省略,也可以是public、protected、private、static、final、abstract,其中public、protected、private三个最多只能出现其中一个,abstract和final最多只能出现其中一个,它们可以和static组合起来修饰方法。

返回值类型可以是JAVA语言允许的任何数据类型,包括基本类型和引用类型;如果声明了方法返回值类型,则方法体内必须要有个有效的return语句,该语句返回一个变量或者表达式,这个变量或表达式必须和此次声明的类型匹配。

方法名的命名规则与成员变量的命名规则基本相同。

形参列表用于定义该方法可以接受的参数,形参列表有零组到多组“参数类型 形参名”组合而成,多组参数之间用逗号隔开。一旦定义该方法指定了形参列表,则必须在调用该方法时传入对应的参数值。

3、构造器
定义构造器的简单语法如下:

[修饰符] 构造器名(形参列表){    //零条或多条语句}

构造器是一种特殊的方法。创建对象的基本途径是构造器,通过new关键字来调用某个类的构造器即可创建该类的实例。
修饰符:可以省略,也可以是public、protected、private其中之一。
构造器名:构造器名必须和类名相同。
形参列表:同方法。

Java的子类不能获得父类的构造器。

例:创造一个Person类

class Person{    private String name;    private int age;    //定义一个构造器    public setPersonInf(String name,int age)    {        this.name = name;        this.age = age;    }    //定义一个方法    public void say(String content)    {        System.out.println(content);    }}

其中,this关键字总是指向调用该方法的对象,this的最大作用就是让类中的一个方法,访问该类里的另一个方法或实例变量。static修饰的方法不能使用this引用。

创建一个对象后,如果访问权限允许,类里定义的方法和成员变量都可以通过类或实例来调用。类或实例访问方法或成员变量的语法是:类.类变量或方法,或者实例.实例变量或方法。

4、接口(interface)
接口定义的基本语法:

[修饰符] interface 接口名 extends 父接口1,父接口2...{    //零到多个常量定义...    //零到多个抽象方法定义...    //零到多个内部类、接口、枚举定义...    //零到多个默认方法或者类方法定义...}

接口里定义的是多个类共同的公共行为规范。

修饰符可以是public或者省略,如果省略,则默认采用包权限访问控制符,即在相同包结构下才可以访问该接口。
在命名上与类名采用相同规则,但根据习惯,首字母大写,由多个有意义的单词连缀而成。
一个接口可以有多个直接父接口,但只能继承接口不可继承类。

接口的主要作用有:
(1)定义变量,也可以用于强制类型转换。
(2)调用接口中定义的常量。
(3)被其它类实现。

类实现接口的语法如下:

[修饰符]class 类名 extends 父类 implements 接口1、接口2...{    //类体部分}

5、初始化块
与构造器作用类似,初始化块可以对Java对象进行初始化操作。
初始化块的基本语法如下:

[修饰符]{    //可以包含任何可执行性语句}

初始化块的修饰符只能是static,static修饰的初始化块称为静态初始化块。静态初始化块不能访问非静态成员。

当创建Java对象时,都需要先执行最顶层父类的初始化块、构造器,然后再执行其父类的初始化块、构造器… ,最后再执行该类的初始化块、构造器。从某种程度上来看,初始化块是构造器的补充。

6、final关键字
final关键字可用于修饰类、变量和方法,用于表示它修饰的类、方法和变量不可改变。final修饰的变量一旦获得初始值,该final变量的值就不可被重新赋值。
final修饰的类变量、实例变量能指定初始值的地方如下:
(1)类变量:必须在静态初始化块中指定初始值或者声明该类变量时指定初始值,而且只能在两个地方的其中之一指定。
(2)实例变量:必须在非静态初始化块、声明该实例变量或构造器中指定初始值,而且只能在三个地方其中之一指定。

当final修饰引用类型变量时,final只能保证这个引用类型变量所引用的地址不会改变,即一直引用同一个对象,但是这个对象完全可以改变。

当final修饰方法时,代表该方法不可被重写。如果出于一些原因不希望子类重写父类的某个方法,则可以使用final修饰该方法。final修饰的方法可以重载。

当final修饰类时,该类不可有子类。

7、abstract关键字
抽象方法和抽象类必须使用abstract修饰符来定义,有抽象方法的类只能被定义为抽象类,抽象类里可以没有抽象方法。
Java中抽象方法和抽象类(abstract修饰的方法和类)的规则为:
(1)抽象方法不能有方法体。其修饰的方法必须被其子类重写才有意义,因此abstract修饰的方法不能定义为private访问权限。
(2)抽象类不能实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。抽象类主要是用于被其子类调用。
(3)含有抽象方法的类只能被定义为抽象类。

参考书籍:《JAVA疯狂讲义(第3版)》