1.this关键字
>>this可以用在所有非静态的方法中
a) 是一个引用,指向调用当前方法的对象。可以用在任何的非static方法体内部
b) 是非static方法能直接调用非static方法的关键
c) this通常都可以省略,但是如果是有歧义,那么此时不可省略
2.static关键字
★ static修饰三类成员:静态的
▪成员变量 : 该成员变量是属于类的 , 所有的成员变量都会有默认初始值 ;
非static的成员变量进行默认初始化是在创建对象时,static的成员变量的默认初始化实在加载类时 ;
特点:static成员变量不会随着对象的创建而重新初始化,会随着程序的重新加载而重新初始化 .
▪方法:得调用才执行 .
▪代码块: 在类加载时期完成变量或代码块的初始化 ;
一旦用static修饰,表示所修饰的内容是属于类的。
因为是属于类的,所以通过类来调用,体现在代码上为:通过类名来调用
❶.修饰方法:
1. 通过类名直接调用
a) 一个类中static可以直接调用static的原因是省略的类名
b) static资源可以通过对象来访问,但是不推荐,推荐使用类名来访问
2. static方法中不能使用this关键字,super关键字
a) 调用一个非static的方法,除了传递常规的参数外,其实还会隐式的传递调用当前方法的引用的对象过去。
3. static方法不能调用非static方法原因
a) static方法体中没有this关键字
❷.修饰代码块:
属于类的代码块,在类加载期间执行的代码块,只执行一次,可以用来在程序中加载静态资源。
static{
代码块
}
案例说明
静态资源:加载图片,音乐等
内容确定之后不变,要供程序中的多个对象使用的资源
3.final关键字
❶ 修饰变量:
▪可以修饰成员变量,也可以修饰局部变量
▪如果修饰成员变量,在声明的同时必须初始化,如果修饰局部变量,可以先声明,后初始化。
▪变量的值一旦确定,不可以被修改
❷ 修饰方法:作用:表示方法是不可变的。
▪体现在:方法不可以被重写
❸修饰类:作用:表示此类时不可变的
▪体现在:类不可以被继承
final 不论修饰以上三种的那一种,它的作用都是最终的 , 不可改变的 意思。4.static final 常量
注意点: ①static final常量会在编译期被替换.
public class Test {
public static final int A = 22;
public static void main(String[] args) {
/**类名点常量名时,编译期已经替换成了具体赋的值 22*/
System.out.println(Test.A); //22
}
}
②常量名必须用大写字母.
5.abstract关键字
❶ 抽象方法
▪只有方法的声明,没有方法体,连大括号也买有 , 就叫做抽象方法.
▪如果一个类中有抽象方法,那么这个类也一定是抽象类.
❷抽象类 :基于父类的
▪ 意义:为其子类提供一个公共的模板;
抽象类是用于被继承的
▶二者关系:
一个类中如果有抽象方法,那么这个类一定是抽象类 ; 如果一个类是抽象类,这个类中不一定有抽象方法的。
❸抽象类的用法:
一个类继承抽象类,如果抽象类中有抽象方法,那么此类要么全部重写父类中的抽象方法,要么此类也成为抽象类。
★ 注意点:
1. 抽象类中有构造方法,但是抽象类不可以实例化 (new 此类对象)
2. abstract和final不可以同时修饰一个类
6.interface 接口
6.1 接口是一种数据类型(引用类型)
6.2 接口是由 interface 来定义
6.3 接口内只能包含 常量 和 抽象方法
▪ 凡是数据都是常量: 默认public static final 在修饰
▪凡是方法都是抽象的: 默认 public abstract 修饰
public interface interface1 {
int AGE = 18; // 有默认的 public static final
String getName(); // 有默认的 public abstract
}
6.4 接口不能被实例化(接口是不完整的) , 但可以申明引用
6.5 接口是需要被实现的 , 实现类必须重写接口中的所有抽象方法 , 且重写方法必须用 public 修饰
6.6 一个类可以实现多个接口 , 用逗号隔开 public void test implements interface1,interface2{ }
6.6 接口可以继承接口 public interface1 extends interface2{ }
> 特点 : 多实现
★注意点:
▪接口中没有构造器(构造方法) , 不可以被实例化
▪若又继承又实现接口 , 先继承 后实现
▪接口与接口------多继承
▪类和类-----------单继承
▪类和接口--------多实现
抽象类和接口的比较:
1.抽象类中有构造器,而接口中没有,但是两者都不能实例化
2.抽象类中可以有变量,可以有常量,而接口中只能有常量3.抽象类中可以有抽象方法,也可以有普通方法,而接口中只能有抽象方法
4.抽象类和接口都可以用于继承,但是抽象类的继承是单继承,接口的继承是多继承