package zimu; public class A { public void f() { for (int i = 97; i <123; i++) { System.out.print((char)i); } System.out.println(); } } package zimu; public class B extends A { public void g() { for (int i = 65; i <91; i++) { System.out.print((char)
类的继承 父类-子类 关键字 extends 新建一个父类 public class Person { private String name; private int age; public void run() { System.out.println("Person run"); } } public class Student extends Person { public void run()
/*子类可以为继承来的实例方法,类方法,实例属性,或下标提供自己定制的实现.我们把这种行为叫重写. 如果要重写某个特性,你需要在重写定义的前面加上 关键字.这么做,你就表明了你是想提供一个重写 版本,而非错误地提供了一个相同的定义.意外的重写行为可能会导致不可预知的错误,任何缺少 关键 字的重写都会在编译时被诊断为错误. 关键字会提醒 Swift 编译器去检查该类的超类(或其中一个父类)是否有匹配重写版本的声明.这个 检查可以确保你的重写定义是正确的. */ class Vehicle { va
关于父类引用指向子类对象 例如: 有以下2个类 public class Father { public int age = 70; public static string name = "父亲"; } public class Son : Father { public int age = 30; public static string name = "儿子"; } Father f=new Son(); 这种用法叫做"父类引用指向子类对象,或者叫&
========================= 重写实例属性 我们可以在子类中重写从父类继承来的属性,属性有实例属性和静态属性之分,他们在具体实现也是不同的. 实例属性的重写一方面可以重写getter和setter访问器,另一方面可以重写属性观察者. 计算静态属性需要使用getter和setter访问器,而存储属性不需要.子类在继承父类后,也可以通过getter和setter访问器重写父类的存储属性和计算属性. 下面看一个示例: class Person { var name: String