java 代码
- class A{
- String name = "A";
- int age = 18;
- String getName(){
- return name;
- }
- String greeting(){
- return "classA";
- }
- String fooA(){
- return "fooA";
- }
- }
- class B extends A{
- String name ="B";
- String sex = "male";
- String greeting(){
- return "classB";
- }
- String fooB(){
- return "fooB";
- }
- }
- public class TestAll{
- public static void main(String[] args) {
- A a = new A();
- A b = new B();
- System.out.println(a.greeting()+" has name "+a.name);
- System.out.println(b.greeting()+" has name "+b.name);
- System.out.println(b.fooA());
- System.out.println(b.age);
- /*Error
- * System.out.println(b.fooB());
- System.out.println(b.sex);
- */
- }
- }
父类引用子类对象 ,因为b的类型是父类的类型A,b只能调用从父类A继承下来的方法和变量。
b.greeting 调用的是B内的greeting()方法(重写了A的greeting()),而b.name则返回A(超类)的name.(B类中的变量name不是重写A中的变量name,变量被不能重写!)