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; }