简记static,final,abstract,interface

1.static

 static 可以用来修饰:属性;方法;代码块;内部类
 *
 * static修饰属性:静态变量(类变量)
 *       属性:按是否使用static修饰,可分为 静态属性 和 非静态属性(实例变量)
 *           实例变量:创建多个类的对象,每个对象都拥有一套类中的非静态属性,但修改其中的一个对象的非静态属性时,
 *                   不会导致其他类中的同样的属性值发生修改
 *           静态变量:创建多个类的对象,多个对象共享同一个静态变量,但通过某一个对象修改静态变量时,会导致其他对象调用
 *                   这个静态变量时,已经是被修改过的
 *      静态变量随着类的加载而加载,可以通过 "类.静态变量" 的方式进行调用
 *      静态变量的加载要早于对象的创建
 *      由于类只加载一次,则静态变量在内存中也只会存在一份,在方法区的静态域中
 *
 * static修饰方法:静态方法
 *        随着类的加载而加载,可以通过 "类.静态方法" 的方式进行调用
 *        静态方法中只能调用静态的方法或属性
 *        非静态方法中两者的方法和属性都可以被调用
 *
 * static注意点:
 *       在静态的方法内,不能使用this关键字,super关键字(super为this的父类,但this在static之后创建)
 *       关于静态属性和静态方法的使用,从类或对象的生命周期方面理解(两者在jvm中的创建加载顺序)

2.final

 * final可以用来修饰:类;方法;变量
 *
 * final修饰一个类:此类不能被其他类继承
 *
 * final修饰一个方法:表明此方法不能被重写
 *
 * final修饰变量:此时的变量就称之为常量
 *      final修饰属性:可以考虑赋值的位置有:显示初始化,代码块中初始化,构造器中初始化
 *      final修饰局部变量:
 *                尤其修饰形参时,表明此形参是一个常量,但我们调用此方法时,给常量形参赋值一个实参;
 *                一旦给该常量形参赋值以后,就只能使用该形参,不能对其重新赋值
 *
 *  static final 只可以用来修饰属性,方法
 *      修饰属性:全局常量
 *      修饰方法:不能被重写的类方法

3.abstract

* abstract 关键字可用来修饰:类,方法
 *
 * abstract 修饰类:抽象类( public abstract class 类名();*         抽象类不能被实例化
 *         抽象类中一定有构造器,便于子类实例化时调用(涉及到子类对象的实例化全过程,调用父类的构造器)
 *         开发中都会提供抽象类的子类,让子类实例化对象完成相关的操作
 *
 * abstract 修饰方法:抽象方法( 权限修饰符 abstract 方法返回值类型 方法名();*        抽象方法只有方法的声明,没有方法体
 *        包含抽象方法的类一定是个抽象类;反之,抽象类中可以没有抽象方法
 *        若子类重写了父类中的所有抽象方法之后,此子类方可实例化;否则,此子类一定是个抽象类,需要abstract修饰
 *
 * abstract 使用上的注意点:
 *        不能用来修饰:属性,构造器等结构
 *        不能用来修饰:私有方法,静态方法,final的方法

4.interface

 * 1。 接口使用interface来定义
 * 2。在java中,类和接口是并列结构
 * 3。如何定义接口:定义接口中的成员
 *    3.1:JDK7及以前:只能定义全局常量和抽象方法
 *                   全局常量:(public static final) 类型 常量名;(可省略)
 *                   抽象方法:(public abstract) 返回类型 方法名;(可省略)
 *    3.2:JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法,默认方法
 *
 * 4。接口中不能定义构造器,意味着接口不能实例化
 * 5。java开发中,接口通过让类去实现
 *             如果实现类实现了接口中的所有抽象方法,则此实现类就可以实例化
 *             如果实现类没有实现接口中的所有抽象方法,则此类还是一个抽象类(需要在类的定义上声明为abstract)
 *
 * 6。接口可以多实现多个接口
 *      class 类名 implements 接口一,接口二...{}
 *      class 类名 extends 父类名 implements 接口一,接口二...{}
 *
 * 7。接口之间可以多继承
 *
 * #############################################################
 *
 * 3.2:JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法,默认方法(可以直接用对象调用,不用重写)
 *           1。接口中定义的静态方法只能通过 接口.静态方法名 的方式调用,不能通过实现类或实现类对象调用
 *           2。可以通过实现类的对象来调用接口中的默认方法,对象.默认方法名 ;但不能通过实现类来调用
 *           3。如果实现类重写了接口中的默认方法,调用时则调用的是重写后的方法
 *           4。如果子类(或实现类) 继承的父类和实现的接口中声明了同名同参数的默认方法,那么子类在没有重写此方法的前提下,
 *              默认调用父类中的同名同参数方法
 *           5。如果实现类实现了多个接口,而这多个接口中定义了同名同参数的默认方法,那么子类在没有重写此方法的前提下,
 *              编译器会报错接口冲突(避免接口冲突就必须要在实现类重写方法)
 *           6。如果实现类继承的父类并且实现了多个接口,在自己的方法体中调用父类,接口中被重写的方法:
 *                 调用自己定义的重写的方法:直接方法名
 *                 调用父类中生命的方法:super.方法名
 *                 调用接口中的默认方法:接口名.super.方法名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值