public class Father {
public void say(){
System.out.println("father say");
}
public static void main(String [] args){
//向上转型---表示父类对象的引用指向子类对象 ---父类 对象=new 子类()
//父类引用指向子类对象,子类引用不能指向父类对象
//向下转型---指在向上转型的基础上再次指向子类的对象要使用强制转换--父类 对象1=new 子类();子类 对象2=(子类) 对象1;
Father son=new Son();//l因为父类的对象的引用指向是一个子类,所以打印方法也会是子类的方法
son.say();
}
}
class Son extends Father{
public void say(){
System.out.println("say");
}
}
/*java中的多态具体表现在方法的重载和覆盖上,覆盖主要指子类重写了父类中的方法即子类中的方法与父类中的方法
* 保持一致,但是方法的修饰符一定要大于等于父类中方法的修饰符
* 动态绑定:具体表现在向上转型上
* 静态绑定:在程序编译的时候就绑定的,在java中变量都是静态绑定的,只有private,static,final是静态绑定
* static关键字的访问是不需要某个特定的实例的,一个成员在=被声明为static,就能够在它的类的任何对象创建之前被访问,
* 而不必引用任何对象
* 可以通过类名直接访问,也可以用对象直接访问
* final关键字
* 1.修饰属性,代表该属性是常量,并且不能修改
* 2.修饰方法不能被重写
* 3.修饰类,该类不能被继承
* abstract 关键字
* 1.abstract class 类名{}抽象类
* 2.abstract修饰方法,表示抽象方法,前提该类一定是抽象类。抽象方法只声明方法头,没有方法体
* 要实现抽象方法,必须由抽象类的子类来实现
*
*
*/