父类属性和子类属性同名

2017-08-07  本文已影响0人  xiaoliman

上转型中:

  1. 如果父类中的属性和子类的属性同名的时候, 父类对象认为认为子类的属性是特有的 , 父类定义的对象只调用自己的属性。
    2.即是当父类属性和子类属性同名时, 父类对象名 调用的就是 父类的属性,子类的对象名 调用的就是 子类的属性。
  2. 如果父类的方法和子类方法同名时,在上转型关系中,父类的引用指向子类的实体 ,父类的对象调用的是子类的方法。但是要注意,此时父类的对象名不能调用子类特有的方法,如果要调用,则需要下转型。

父类:

package com.qf.demo6;

public class Test {

    public static void main(String[] args) {
        Person  person = new Person();
        Student student = new Student();
        Person person2 = new Student();
        person2.eat();//父类的引用指向 子类的实体    父类的对象调用的是子类的方法
        System.out.println(person2.name);
        System.out.println(person2.age);
        
        Student student2 = (Student) person2;
        System.out.println(student2.name);
        System.out.println(student2.age);
        
        // 父类对象名 调用的就是  父类的属性
        // 子类的对象名 调用的就是 子类的属性
        
        /**
         *  父类的 属性和 子类属性同名 . 父类调用父类的
         *  子类重写了  弗雷德分昂发         父类对象调用的是子类的方法
         */
    }
}

Student类

package com.qf.demo6;

public class Student extends Person{

    String name = "zzz";
    
    int age = 1;
    
    String  sex= "女";
    
    @Override
    public void eat() {
        System.out.println("学生吃肉");
        System.out.println(name);
        System.out.println(super.name);
        System.out.println(super.age);
    }
    public void eat1() {
        System.out.println("学生dd吃肉");
        
    }
}

Person类

package com.qf.demo6;
public class Person {
    String name="abc";
    int age= 9;
    public void eat(){
        System.out.println(name);
        System.out.println("吃");
    }
}
上一篇 下一篇

猜你喜欢

热点阅读