* 1、重载:一个类中方法之间的关系,重写:父类方法被子类重写
* 2、重载它对权限修饰符、返回值没有限制。 但是重写有。子类的权限修饰符。不能比父类小。
* 3、参数列表:重载要求参数列表不同。重写。参数必须一致。
* 4、重载和重写都要求 方法名一致、
接口和类之间是实现。
接口和接口之间是继承。
接口和抽象类的区别:
* 1、接口没有构造器。但是抽象类有。
* 2、接口中只有抽象方法,抽象类中可以有抽象方法
* 3、接口中的变量都是公共静态常量 而且修饰符可以省略,抽象类没有限制。
* 4、接口和抽象类都不能实例化。
接口中的两种元素:
一个是公共的静态的常量【修饰符都可以省略】public static final 这三个修饰符的顺序是可以任意的,如static final public ; final public static
一个是公共的抽象方法。【修饰符可以省略】 默认为public abstract
没有构造器、
构造方法的作用:
* 初始化对象。
* 初始化对象的成员变量、
default不能跨包使用。default修饰的类不行。而成员也不行。
protected不能直接跨包使用,但是如果通过继承,子类是可以拿到的。
* 构造器能不能被子类继承 但是可以被子类调用。
* super(); 用于子类构造器调用父类构造器。super还可以调用父类非静态方法;
代码块:[只要在代码块中定义的变量,就是局部变量]
* 普通代码块:在方法中。
* 静态代码块:在类中,方法外,用static修饰。在类加载的时候,就会被调用。
* 构造代码块:在类中,方法外,没有用static修饰。在创建对象的时候,被自动调用。
* 【构造方法和构造代码块的区别?】
* 作用都是用来初始化对象,但是构造代码块比构造方法先执行。但是构造方法它的辨识度高。
* 同步代码块:在线程中会用到,即线程锁 synchronized,此处就是同步代码块。
public class Test4 {
public static void main(String[] args) {
int a = -12;
// 普通代码块
{
System.out.println(a);
int b = 13;
}
// System.out.println(b);
Test4 t = new Test4();
Test4 t2 = new Test4();
}
static {
System.out.println("静态代码块");
}
{
System.out.println("构造代码块");
}
public void run() {
synchronized (new Object) {
for(;i<10;i++){
System.out.println("同步代码块");
}
}
}
}