子类重写父类的方法,要求子类方法的访问修饰符要大于或等于父类方法访问修饰符,否则编译不通过
多态:
允许一个父类变量引用子类的对象,允许一个接口类型变量引用实现类对象,反过来却不行(相同的行为,不同的实现)
多态的具体表现为重载和重写
在多态调用中,父类变量指向子类对象,只能调用父类中定义的属性和方法,不能调用子类特有的属性和方法
多态应用主要应用:
1.多态参数 2.多态集合
注:如果一个方法的参数是一个父类变量,就意味着调用时可以传递任何一个子类对象
instanceof关键字,用于判断一个变量所指向的对象是否匹配某个类型
动态绑定:
指在运行时根据具体对象的类型进行绑定,将一个方法调用与该方法所在的类关联起来,称为绑定
如果一个方法只有定义,没有方法的内容实现,这个方法叫抽象方法,用abstract关键字定义,拥有抽象方法的类叫抽象类,也用abstract来定义
抽象类中可以没有抽象方法,也可以有具体方法(实现方法),如果一个类继承一个抽象类,必须实现抽象类中定义的所有抽象方法,否则该类只能是抽象类
因为抽象方法必须要被重写,所以不得用private,static修饰
如果一个类的构造方法是protected,表示不同包的子类可以通过 super()来调用该方法妆生父类对象
注:这里是调用而不是继承,构造方法不能继承
接口:
接口可以看作是抽象类的特例,抽象类中可以定义抽象方法,也可以定义具体方法,而接口中只能定义抽象方法
一个类可以继承另一个类,可以重用父类的属性和方法,所以是属性和方法的抽象,而接口只能抽象方法,是行为的抽象
接口中定义的方法,只能是公会的抽象方法,如果是默认也是公共的抽象方法,所以你如果用其它访问修饰符来访问是不能通过编译的
一个类可以实现多个接口,当类实现多个接口时,必须实现每个接口中定义的抽象方法
接口和多态调用一样,接口变量指向实现类对象,也只能调用接口中有的方法,实现类特有的方法是不能调用的
一个方法如果使用父类变量做参数,就意味着可以传递任何一个子类对象,同样,一个方法如果使用接口变量作为参数,就意味着可以传递任何一个实现类对象