Java的几个关键字

一、限定访问范围的关键字

private、default、protected、public四个关键字可用于方法,属性中

其中,public还可用于所有类

private可用于内部类

当属性或者方法没有写private,protected,public三个关键字时,自动用default

这四个关键字用于方法,属性中时,各自权限如下

作用于

权限级别

同一package

子孙类

其他package

public

所有权限




protected

继承权限




default

包权限




private

私有权限




二、final关键字

1.final写在属性前时,表示这个属性不可再次变化,也就是变为常量。此时,常量名全大写。如 public final String A;此时,A必须初始化或者在构造函数中为其赋值。

2.final写在参数前,如void a (final Person person);时,person不可等于Person**的新实例化对象。也就是在此方法内,此参数的值是固定的,不可更改。

3.final写在一般方法中,如public final void a ();,此时方法不可被覆写

4.final写在类的定义中,那么,这个类不可被继承。如final class a{};

三、static关键字

1.static定义属性时,属性为类共有的属性,所有对象的此属性的值均相同且同时变化。注意,此变化为最后的变化,如多个对象分别改属性值按顺序为0,1,2,那么输出时,全部对象的此属性的值均为2

2.static定义一般方法时,此方法为静态方法,此方法中不可直接调用非静态方法,需要使用对象调用,且此方法内,不可使用this。

3.static定义块时,也就是static{},每当实例化对象时,先按static块的顺序执行块,再执行构造方法。当在程序执行过程中,static块只执行一次,就算这个类有多个实例化对象,那么static只执行一次。

4.static定义内部类时,才可以将内部类的属性和方法定义为静态,否则不可。同时,不可访问外部类的非静态方法与属性。在创建静态内部类的对象时,不需要实例化外部类对象,可直接实例化,如

new a.b();//a是b的外部类

四、instanceof关键字

此关键字用于比较类是否相同。用法:对象 instanceof 类名

五、super关键字

super用在继承关系中,来进行子类对父类的调用 (用在类中,而不是对象里)

1.super对父类属性与一般方法的调用

在子类中可以调用父类的非私有属性与方法,如super.属性名便是调用父类的b属性;super.方法名便是调用父类的方法。

2.super调用父类的构造方法。

在子类中,调用父类的构造方法只可在子类的构造方法第一行调用,也就是说,每个子类的构造方法只可调用一个父类的构造方法。如super();是调用无参构造,super(类型 属性);是调用单参构造。

六、abstract

abstract关键字用于定义抽象的方法,类。

1.抽象类

public abstract class A{}

抽象类中可以定义抽象方法,普通方法,构造方法,一般属性。其中,如果有子类继承抽象类,需实现抽象类的抽象方法(子类也为抽象类时,不需要实现)。

注意,抽象类无法直接实例化对象,需要它的子类向上转型才可使用普通方法

2.抽象方法

public abstract void a();

抽象方法中,不允许存在任何语句甚至花括号{},否则报错。注意,构造方法不存在抽象形式抽象方法需要在抽象类或者接口类中存在。普通类中不存在抽象类。

实现抽象方法即将抽象方法覆写一遍,如覆写上面的抽象方法a()。

public void a(){};

此时,方法a的格式与普通方法格式相同。

七、interface与implements

interface与implements两个关键字配合使用,分别是定义接口类和实现接口类

1.interface

interface A{}

interface关键字用来定义接口类。接口中,只可存在抽象方法,和常量,不可出现变量和普通方法和构造方法。注意,若直接在接口类中定义int b = 0;,则直接表示为b是为0的常量,而不是变量同理,直接定义方法,则表示为抽象方法。接口中,方法访问权限只可为public,实现时要求访问权限要大于等于被实现的方法

2.implements

class B implements A,C{}

实现接口时,一个或者抽象类或者接口可以实现多个接口。类实现接口时,要实现所有抽象方法,抽象类或者接口实现时,不需要。

八、import

import关键字用来调用不同包中的类,默认情况下,一个类只可调用本包中的其他类,而不能调用不同包的类。引用包中所有类时,在包名后加*即可,如一个名为com的包

import com.*;

当引用包中的单个类时,在包名后加上类名称,如com中有个类为A

import com.A;

类之间的关系

1.继承

1.如何继承

类通过extends关键字来实现继承关系。如class a extends b 这是a继承b(也就是a是b的子类)。

2.父子类之间,属性与方法的关系

子类可以继承与调用父类非私有属性与一般方法。同时,如果子类拥有父类的属性与方法,则使用子类对象时,默认覆盖父类的属性与方法。调用构造干法时,需要使用super关键字。

父类可以通过子类名.方法名();来调用子类方法,但注意,子类方法必须是静态才可调用。若不同包,则需要引入类。如a extends b,a中有方法a(),b中调用a的方法(同包) a.a();

向上转型

向上转型时,子类所有与父类不同的方法与属性全部不可访问,但相同方法将父类的方法替换,但父类的属性与静态方法不会被覆盖

向下转型

向下转型前,需要先向上转型。如下

Person s = new Student();//先向上转型
Student s1 = (Student)s;//向下转型

Person是Student的父类

转型后,s1使用自己的也就是子类的属性与方法

向下转型也就是在某些情况下使用,如将类存在父类的集合中,想要通过父类来得到子类的一些东西,那么就需要向下转型,它并非不重要。

2.依赖

a类的方法需要b类的对象来调用b类的属性或者方法

3.关联

两个类之中可以互相存在相互的对象属性,也可以就一个类中有对方的对象属性

4.聚合

一个类里面有多个类的对象属性,那些类没有这个类的对象属性

5.组合

关系加强的聚合,如一个类中有多个内部类,内部类中有聚合关系,而调用内部类中的主要类时要先实例化外部对象,再通过对象来得到内部类中的主要类对象

类之间的调用

1.同包的类

两个类在同一个包中时,类之间可以直接通过创建对象来互相调用互相的可访问属性与方法。

2.不同包的类

两个类不在同一包中时,需要[import](# 八、import)关键字来进行导入类,再通过创建对象来调用