修饰符

访问权限修饰符:
public:public修饰的成员可以在所有类中被创建的对象调用(若成员是静态成员可以被类名直接调用)
protected:protected修饰的成员只能在同一个包内其他类或者是他的子类创建对象调用(…)
default:default修饰的成员只能被同一个包中的类创建对象使用(…)
private:private修饰的成员只能在自己的类中使用。其他类想使用他的成员,只能使用有权限的方法获得

类的修饰符:
public:代表主类,一个类中不能含有两个或以上的public修饰的类
abstrat:代表抽象类,子类继承后要重写abstract方法,如果不进行重写则默认子类依旧是抽象类
final:代表终类,不能被其他类继承
无修饰符:类缺省访问控制符:如果一个类没有访问控制符,说明它具有缺省的访问控制符特性。
此时,这个类只能被同一个包中的类访问或引用。这一访问特性又称为包访问性。

方法的修饰符(暂且不提访问权限修饰符):
static :用修饰符 static 修饰的方法称为静态方法。静态方法是属于整个类的类方法;
而不使用static 修饰、限定的方法是属于某个具体类对象的方法。 由于 static方法是属于整个类的,
所以它不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量,即 static 方法只能处理 static的域。

final :用修饰符 final修饰的方法称为最终方法。最终方法是功能和内部语句不能更改的方法,
	 即最终方法不能重写。这样,就固定了这个方法所具有的功能和操作,防止当前类的子类对父类关键方法的错误定义,
	保证了程序的安全性和正确性。所有被 private 修饰符限定为私有的方法,以及所有包含在 final 类 ( 最终类) 中的方法
	都被认为是最终方法。

native :用修饰符 native 修饰的方法称为本地方法。为了提高程序的运行速度,
	需要用其它的高级语言书写程序的方法体,那么该方法可定义为本地方法用修饰符 native 来修饰;
abstract :用修饰符 abstract 修饰的方法称为抽象方法。抽象方法是一种仅有方法头,没有方法体和操作实现的一种方法。
synchronized :该修饰符主要用于多线程共存的程序中的协调和同步

属性的修饰符
static :用 static修饰的成员变量仅属于类的变量,而不属于任何一个具体的对象,静态成员变量的值是保存在
类的内存区域的公共存储单元,而不是保存在某一个对象的内存区间。任何一个类的对象访问它时取到的都是相同的数据;
任何一个类的对象修改它时 , 也都是对同一个内存单元进行操作。

final :最终域修饰符 final 是用来定义符号常量的。一个类的域 ( 成员变量 ) 如果被修饰符 final 说明,
	则它的取值在程序的整个执行过程中都是不变的。final修饰的属性代表常量,必须在声明后进行赋值。可以利用静态或者
	动态代码块或者构造方法里面进行赋值,赋值后不再改变

volatile :易失 ( 共享 ) 域修饰符 volatile是用来说明这个成员变量可能被几个线程所控制和修改。
	也就是说在程序运行过程中,这个成员变量有可能被其它的程序影响或改变它的取值。因此,
	在使用中要注意这种成员变量取值的变化。通常 volatile 用来修饰接受外部输入的域。

transient :暂时性域修饰符 transient 用来定义一个暂时性变量。其特点是:用修饰符transient 限定的暂时性变量,
		将指定 Java虚拟机认定该暂时性变量不属于永久状态,以实现不同对象的存档功能。否则,类中所有变量
		都是对象的永久状态的一部分,存储对象时必须同时保存这些变量。

接口和抽象类
从语法上讲:接口使用interface关键字而抽象类使用abstract关键字,接口里面属性都是静态常量,方法都是抽象方法,
抽象类里面属性没有太多要求,而方法可以为抽象方法也可以为非抽象方法,而且抽象类可以含有构造方法。
但是二者都不能被实例化
从功能上来讲:接口是一般实现一个特殊的功能,可以降低系统的耦合度,所以他的实现类一般不是同种事物;
而抽象类也可以指定子类的 功能,可以实现代码重用但是他一般用于不同种事物。
从使用场景讲:模块之间一般使用接口,而模块内部一般使用抽象类

静态代码块,动态代码块以及类加载的过程:
类的加载首先找到mian()方法所在的类,然后执行这个类里面的静态代码块,然后执行mian()方法体里面的代码

对象的初始化顺序:首先初始化静态成员或者执行父类静态代码块的内容(看二者的顺序),父类静态代码块的内容执行完毕后且静态成员
初始化完毕,接着去执行子类的静态代码块的内容或初始化静态成员,当子类的静态代码块内容执行完毕之后且静态成员初始化完毕,
先去初始化父类的成员变量,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,
父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去初始化子类的成员变量
然后看子类有没有非静态代码块,如果有就执行子类的非静态代码块。非静态代码块执行完毕再去执行子类的构造方法。总之一句话,
静态内容先执行,接着初始化父类成员变量执行父类非静态代码块和构造方法,然后初始化子类成员变量最后执行
子类非静态代码块和构造方法。

abstarct final static private修饰符
1.abstract不能与final同时使用(不能同时修饰类或者方法),因为abstract修饰的方法是要被子类重写的,final规定是终态方法,
不能被重写,类也是同理。
2.abstract不能与static同时使用来修饰一个方法,从static来说:static修饰的方法是类的方法,但是使用类名.调用的是抽象方法无
实际意义。从abstract上讲:abstract修饰的方法是要被子类重写,但是子类不能重写static修饰的方法,二者矛盾。
3.abstract不能与private同时修饰方法,private限制类的访问权限只有自己拥有,自己类使用abstract修饰的方法体无实际意义。

在接口中
变量默认的是public static final :
public:指定实现接口的类可以使用这个变量
static:如果不使用static修饰,一个实现类实现了多个接口,然后接口中变量又重名,就会调用不了想要的变量
final:如果不使用final,就可以随便修改变量的值,接口就指定不了一个标椎,违背了开闭原则
方法默认的是public abstract,但是在JDK1.8之后可以在类中使用static方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值