三大修饰符
abstract static final
1.Abstract
使用 抽象abstract修饰后的类不能new 不能够实例化 的 但是他的子类是可以进行装箱的
- 抽象类可声明为引用,更自然的使用多态。
1.1抽象方法(只声明不实现)
如果一个类包含抽象方法,那么该类必须是抽象类
继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类。最终,必须有子类实现该父
类的抽象方法,否则,从最初的父类到最终的子类都不能创建对象,失去意义。
因为抽象类当中的方法,在他的继承实现子类都要重新该方法,故用处不大。
abstract void eat(); 只声明 不实现 但是抽象方法一定要在抽象类当中
抽象类中的方法 在子类中一定要实现。
1.抽象方法一定要定义在抽象方法里面
2.只声明不实现
3.继承子类就要实现抽象方法
1.2抽象的注意事项
- 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。
- 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的
- . 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
- 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象
类。
2.Static
概念:
关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属
于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。
静态属性
如果是普通的话就是存在堆当中
使用static修饰的变量的属性b是放在了方法区中 共享一个变量b
统计次数的术后使用的一个count
可以使用构造方法的时候newcount++
只要一创建对象,就回调用构造方法,调用count++
2.1静态变量
.静态成员变量
- 类的非静态成员方法、静态成员方法都可以直接访问静态成员变量
- 其他类要访问某个类的静态成员变量,既可以通过实例名访问,也可以直接用类名来访问,推荐用类名访问的方式,这样能更直观的说明访问的变量是静态成员变量
- 静态方法应用外部的属性,属性必须使用static
2.2静态方法
- 方法使用了static修饰了 使用类来直接调用
- 不需要创建对象来调用
- 静态方法只能访问静态方法,非静态能访问静态
方法 可以继承但是不能够重写
- 静态方法允许直接访问静态成员。
- 静态方法不能直接访问非静态成员。
- 静态方法中不允许使用this或是super关键字。
- 静态方法可以继承,不能重写、没有多态。
2.3静态代码块
在创建对象之前惊进行属性的初始化赋值 但是只能访问静态的属性
类的扫描就会执行静态代码块
随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。
格式
类加载器加载时加载静态代码块
3.Finall
-
final修饰类:此类不能被继承。
-
final修饰方法:此方法不能被覆盖。
-
意为最终方法,不支持子类以覆盖的形式修改。
-
常量的话需要赋予初始值 在一个类中赋值都行
3.1finall的特点
- 实例常量不再提供默认值,必须手动赋予初始值。
- 赋值时机:显示初始化、动态代码块、构造方法。
- 注意:如果在构造方法中为实例常量赋值,必须保证所有的构造方法都能对其正确赋值。
基础的数据类型
finall变量是要初始化的,后面也是不能改变值得
初始化的赋值需要在本类中进行。。。