java继承的关系问题
继承基础:
继承表示两个类之间的关系,是一种由已有类创造新类的过程。
子类不仅能从父类继承成员变量和成员方法,还可以重新定义
它们以及扩充新的内容。
优点:1.解决代码重复
2.加强父类
缺点:耦合度太高
private方法属于父类独有,子类无法继承
但是private属性可以被子类继承,但是不能直接调用
继承中的关系问题
public class Animal {
public Animal() {
System.out.println("父类构造方法执行");
}
}
class cat extends Animal {
public cat() {
System.out.println("子类构造方法执行");
}
}
class test {
cat c = new cat();
}
/**
执行结果:
父类构造方法执行
子类构造方法执行
进程已结束,退出代码为 0
*/
//说明在创造子类对象时,先执行来自继承父类的构造方法,再执行自己的构造方法。
public class Animal {
public Animal() {
System.out.println("父类构造方法执行");
}
}
class cat extends Animal {
public cat() {
System.out.println("子类构造方法执行");
}
}
class test {
cat c = new cat();
Animal c1 = new Cat();
}
/**
执行结果:
父类构造方法执行
子类构造方法执行
父类构造方法执行
子类构造方法执行
进程已结束,退出代码为 0
*/
// 这说明Animal c1 = new Cat();父类的引用指向子类的对象是可以的
public class Animal {
public Animal() {
System.out.println("父类构造方法执行");
}
}
class cat extends Animal {
public cat() {
System.out.println("子类构造方法执行");
}
}
class test {
cat c = new cat();
Animal c1 = new Cat();
cat c2 = new Animal();
}
/**
运行报错:
java: 不兼容的类型: com.mytest.test01.Animal无法转换为com.mytest.test01.cat
*/
//这说明子类的引用指向夫类的对象是不可以的
总之从广泛到具体即向下转型会自动转
而向下转型需要强转