java修饰符

1、访问控制符

用来修饰类成员(方法、构造器、成员变量)

修饰符本类本包非本包下的子类不同包、非子类
public
protected 
default(默认)  
private(私有的)   

注:

1)、访问控制修饰符可以用来修饰类
2)、修饰外部类,只能用public或默认(default) 
3)、修饰内部类,都可以用

 

2、非访问修饰符

static,用来修饰类方法和类变量。

final,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

abstract,用来创建抽象类和抽象方法。

synchronized和volatile主要用于线程的编程。

1、static

static变量是属于类的变量,存储在方法区中,而不再堆中,一个类的static变量只有“一份”,不随对象的创建而创建

静态变量:static修饰的成员变量

static只能修饰成员变量,不能修饰局部变量

普通成员变量是属于对象的,所以也把这些成员变量叫做实例变量

因为static变量是属于类,不是属于对象,所以不会随着对象的创建而改变,调用static变量,通过类名直接调用

静态方法:static修饰的方法

调用成员方法时,会传递一个隐式的参数(调用这个方法的对象),在成员方法中就存在了这个对象,用this表示,所以在一个类中,在成员方法中可以直接调用其他成员方法。

成员方法是属于对象的,要调用必须通过对象调用,调用static修饰的静态方法时,不会像此方法传递隐式的对象,所以在静态方法中,不可以使用this,而是通过类名直接调用方法

静态代码块:static修饰的代码块

静态代码块属于类,在类加载期间执行(在进入main方法之前),且只执行一次

静态代码块通常用来在软件中加载静态资源。静态资源:可以供多个对象共用的资源

注:

1)、成员变量的默认初始化会随着类的加载而执行,且只执行一次。 

2)、如果要调用一个类的普通方法:需要先创建对象,在通过对象调用这个方法

3)、静态方法不能调用非静态方法,因为静态方法内部没有this、super

4)、非静态方法叫做实例方法,非静态的成员变量叫做实例变量

 

2、final:不可变的

final修饰变量:
    final int a = 1; //a的值不可变,相当于一个静态常量
final修饰方法:
    public final void test(){} //方法不可变,也就是方法不能被重写
final修饰类:
    public final class 类名{} //类不能被改变,就是说类不能被继承

 

注:

static final 修饰静态常量:是属于类的,会在编译期被替代

命名规则:变量单词全部大写,多个但词之间用下划线隔开

 

3、abstract:抽象类

方法前+ abstract:表名这个方法值声明,不实现(没有方法体)。

例:public abstract void step();

没有方法体和方法体为空是不一样的

抽象类是基于父类的,抽象类一定是一个父类,为子类提供公共的模板(数据,普通方法)(子类共有的属性)

如果一个类中有抽象方法,这个类一定是抽象类。

 

抽象:abstract

可以修饰方法,类

抽象类中有构造器,不可以实例化

abstract和final不可以同时修饰一个类,即不可以用final修饰一个抽象类

如果一个类继承了抽象类,那么此类必须对父类中的所有抽象方法进行重写,否则该子类也会变成一个抽象类
 

接口:interface
接口中的成员:抽象方法,没有普通方法;静态常量
接口中没有构造器
语法:
    public interface 接口名{
        //静态常量
        //抽象方法
    }
在接口中定义的常量,默认提供public static final 修饰符
在接口中的方法,默认提供了public abstract 修饰符

实现方式:要有类对接口中的抽象方法进行重写(实现).

关键字implements:
类 implements 接口:这个类叫做实现类
表示:类会对接口中的所有抽象类进行实现(重写)。
如果类对接口中的抽象方法没有进行全部重写,这个类就变成了抽象类 --- 类似于抽象类

类的继承特点:单继承
接口的特点:多实现,一个类可以实现多个接口
A implements B,C{}

 

接口的继承:
interface A B C
A extends B
B extends C
接口的继承可以是多继承
A extends B,C

接口当中的多继承,必须它们全是接口
A:抽象类   B,C:接口
A extends B,C -- ×

接口的实现,类的继承可以同时出现
必须是先继承,再实现(继承在前,实现在后)

类A,抽象类B,接口C,D
A extends B implements C
A extends B implements C,D

接口,抽象类不能实例化。

 

接口的继承:
interface A B C
A extends B
B extends C
接口的继承可以是多继承
A extends B,C

接口当中的多继承,必须它们全是接口
A:抽象类   B,C:接口
A extends B,C -- ×

接口的实现,类的继承可以同时出现
必须是先继承,再实现(继承在前,实现在后)

类A,抽象类B,接口C,D
A extends B implements C
A extends B implements C,D

接口,抽象类不能实例化。

 

接口与抽象类的区别:
1、抽象类中可以有普通方法,但是接口中只能有抽象方法
2、抽象类中可以有常量,可以有变量,但是接口中只能有静态常量
3、抽象类中有构造方法,接口中没有构造方法
4、接口可以多继承,但是类的继承只能是单继承
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值