public class Hello {
public static void main(String[] args) {
Person p = new Student("张三","软件7班");
System.out.println(p.name);
Student s = (Student)p;
// 类型转换指向的都是同一个对象不会改变对象
Student s1 = new Student("李四","计算机1班");
Person p1 = s1;
p1.name = "wang wu";
System.out.println( s1.name);//wang wu
}
}
// 继承:子类拥有父类去除构造函数,私有成员的变量
// 继承在C#实现的中使用“A:B”表示A类继承B类
// 在JAVA实现中使用“A extends B”表示A类继承B类
// 当父类的默认构造函数被覆盖的时候,子类纯在非默认的构造函数,需要在子类构造函数中
// 使用super方法调用父类的构造函,super关键字也可以访问父类中的变量
// 转型:父类类型变量引用子类对象可以使用强制转换进行类型转换
// 子类类型变量引用子类对象可以隐式转换为父类,因为子类对象中拥有所有的父类对象
class Person {
public Person(String name) {
this.name = name;
}
public String name;
}
class Student extends Person {
public Student(String name,String className) {
super(name);
this.className = className;
}
public String className;
}