访问修饰符 private 、 default 、 protected 、public

一  abstract 抽象      类和方法

1. 概念

        似是而非 , 像却又不是 ,不够准确 , 不够具体    

2. 使用abstract修饰类  

名称:抽象类

语法: abstract class 类名{}

       public abstract class 类名{}

作用:经过abstract修饰的类 不能直接new对象

特点:

  1. 一般都是把父类定义为抽象
  2. 抽象类的属性和方法可以被子类正常继承,只是不能直接new对象
  3. 抽象类型可以作为引用类型,可以使用多态
  4. 抽象类具有构造方法

3. 使用abstract修饰方法

名称:抽象方法

语法:public abstract 返回值 方法名 ();

作用:可以省略当前方法的实现

特点:

1、抽象方法只有方法声明 , 不需要写方法实现

2、抽象类中可以有普通方法,但是有抽象方法的类一定是抽象类

3、子类继承抽象类后,如果类中有抽象方法,子类必须覆盖抽象类中的所有抽象方法

二  static(静态)      属性、方法、代码块

1. 概念

a、static修饰的成员称为静态成员[类成员],全类对象公有

b、不必创建对象,可以直接通过类名调用      类名.静态成员

2, static修饰属性  ——   静态属性

语法:static 变量类型 变量名;

特点:

        1,全类共享 , 不属于单独的某个对象

        2,访问方式  类名.静态属性 |   对象名.静态属性

        A.i       |   A a = new A()  a.i

        3,所有通过对象名访问静态属性的方式都会被自动转化为类名访问

        a.i  =自动转化=>  A.i

3,static修饰方法  —— 静态方法

语法:访问修饰符 static 返回值类型 方法名 (){}

特点:

1、全类共享 , 不属于单独的某个对象

2、访问方式  类名.静态方法()   |   对象名.静态方法()

        A.ma()       |   A a = new A()  a.ma()

3、所有通过对象名访问静态方法的方式都会被自动转化为类名访问

a.ma()  =自动转化=>  A.ma()

4、静态方法中无法使用非静态成员

5、静态方法可以继承 ,不能覆盖 , 没有多态

4,注意

静态成员属于类级别成员 , 存在类信息后即可使用 不需要创建对象

普通成员变量和方法属于对象级别成员,想要使用必须先创建对象再调用

5,static修饰代码块  ——   静态代码块

动态代码块

概念: { 代码 }      对象级别成员

作用:在初始化属性后,执行构造方法之前执行一些功能代码[为属性赋值]

执行机制:每次创建对象都会执行一次

静态代码块

概念:由static修饰的代码块      static{  代码  }     类级别成员

特点:

  1. 类加载的时候被执行一次 , 不能手工调用
  2. 优先加载 , 可以为静态属性赋值 , 或者进行程序必要的初始化行为

类加载:

第一次使用一个类的时候,需要将类的.class文件加载到当前的JVM内存中

(.class文件中保存着当前类的所有详细信息:类名、版本、父类、属性、方法...)

类加载时机【静态代码块执行的时机】

  1. 创建当前类对象
  2. 访问静态属性
  3. 调用静态方法
  4. 创建子类对象
  5. 手工执行类加载   Class.forName(“类的全限定名”)   包名.类名

6,对象初始化流程

  1. 父类 静态属性
  2. 父类 静态代码块
  3. 子类 静态属性
  4. 子类 静态代码块
  5. 父类 成员变量
  6. 父类 动态代码块
  7. 父类 构造方法
  8. 子类 成员变量
  9. 子类 动态代码块
  10. 子类 构造方法

三,final (最终)

  1. final修饰类     最终类    不能被继承   如:String类
  2. final修饰属性|局部变量   属性值|变量值只能赋值一次属性值|变量值不能改变  

final修饰的属性没有默认值

final修饰属性可以不赋予初始值,但是要保证属性在创建对象成功之前赋值一次

(动态代码块、构造方法)

3,final修饰方法  最终方法   不能被覆盖,

4,final 修饰方法形参  最终参数  public void ma(final int a){}  只能通过调用时赋值一次

方法内只能使用 无法修改参数的值

5, 三个修饰符混用

   只有static 和 final 能同时修饰属性    static final  int a = 10;      // 静态常量

  • 21
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值