publicclassAnimal{publicAnimal(){System.out.println("这是一个动物!");}}classDogextendsAnimal{publicDog(){System.out.println("这是一只狗!");}}classTest{publicstaticvoidmain(String[] args){Animal a =newDog();//用is-a来理解//Animal a is Dog(倒过来看,狗是动物)//如果:Dog b = new Animal();(会报错:不兼容的类型)}}
向下转型与向上转型(接上述代码)1.子类转父类(向上转型)1)无需强转
2)当父类中定义某方法,子类中未定义时,默认执行父类的方法,如果子类中定义同名同参数的方法,即为对父类的覆盖,最终执行子类的方法
2.父类转子类(向下转型)
需要强转:Dog b =(Dog)newAnimal();
强转后会导致精度损失,(在只改动上面这行代码)如下图:
浅学JAVA继承在继承中,可以表示为is-a的关系比如在Animal这个父类中:cat:cat is an Animaldog:dog is an Animal在java的继承中,关键字是:extends继承的优点:1.避免代码重复2.加强父类缺点:耦合太高public class Animal{ private String action; public void eat() { }}public class Dog{ pri