方法重写(Override)和重载(Overload)区别
1.方法重写发生在存在继承关系的子类中,由子类重写父类的方法;方法的重载一般发生在同一个类中
2.方法重写必须保证方法的返回值类型与父类一致;方法的重载与返回值无关
3.方法重写时必须保证方法中的参数列表与父类一致;方法重载必须保证每个方法的参数列表不一致
4.共同点:不论方法重写还是重载,都必须保证方法名一致
游离块(初始化块)
在一个Java类中如果存在多个构造器,每个构造器中都有重复代码时,可以将重复的初始化一个游离块中,
统一执行,从而解决构造器中代码重复的问题,游离块一般在构造器执行之前先执行,在构造对象时隐式
调用,本质上就是一个方法的执行体
public class Config{
public Config(){
System.out.println("默认构造器的操作");
}
public Config(String key,String value){
System.out.println("设置单个键值对");
}
public Config(Propertier props){
System.out.println("设置一组信息");
}
//初始化块(游离块)
{
System.out.println("初始化。。。");
}
public static void main(String[] args){
new Config("version","1.8");
}
}
多态
在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();
}
}
-
降低了类之间的耦合
-
面向抽象编程
-
提高程序的可扩展性