方法重写(Override)和重载(Overload)区别:
-
方法重写发生在存在继承关系的子类中,由子类重写父类的方法;方法的重载一般发生在同一个类中
-
方法重写必须保证方法的返回值类型与父类一致;方法的重载与返回值无关
-
方法重写时必须保证方法中的参数列表与父类一致;方法重载必须保证每个方法的参数列表不一致
-
共同点:不论方法重写还是重载,都必须保证方法名一致
static关键字
static可以用于修饰内部类,属性,方法,游离块;被static修饰的元素与实例无关(与对象无关),与类直接相关,一旦类被加载则static修饰的元素都会被初始化,static修饰的元素有最高存活优先级,即便普通引用对象被GC回收时,static修饰相关资源不会立即回收;被static修饰的属性,方法,内部类称之为静态属性,静态方法,静态内部类,这些元素都无需创建对象调用,可以直接通过类名(加".")进行调用,一般static用于常量定义,一些工具类中的方法,需要反复执行,但是不需要反复创建。
-
实例变量,实例方法(需要通过对象进行调用,属于对象的)
-
类变量,类方法(直接与类相关的静态元素)
final关键字
final可以用于修饰类,方法,属性,被final修饰的元素:
-
final修饰的类不可被继承(断子绝孙类)
-
final修饰的变量不可被改变(常用于与static组合进行常量的声明)
-
final修饰的方法是不允许被重写
在java中,方法和属性都是可以以多态的形式存在的,方法的多态主要体现方法的重写与重载;属性的多态一般表现形式为父类引用指向子类对象(向上转型);一个引用类型变量既可以指向该引用类型自身,也可以指向该类型子对象,该操作称之为多态,或者动态绑定。
public abstract class Animal{
public abstract void sleep();
}
public class Dog extends Animal{
public void sleep(){
System.out.println("呼呼大睡。。。。");
}
}
public class Test{
public static void main(String[] args){
//父类引用指向子类对象
Animal a = new Dog();
}
}