2021-05-07

面向对象的继承性的习题:一道题讲明白继承性;

package com.atguigu.homework;

public class Test13 {
    public static void main(String[] args) {
        Father f = new Father();
        Son s = new Son();
        System.out.println(f.getInfo());//student;
        System.out.println(s.getInfo());//student;
        s.test();//student;  student;
        System.out.println("-----------------");
        s.setInfo("老师");//利用set方法修改了从父类中继承过来的info属性,
        System.out.println(f.getInfo());//student;
        System.out.println(s.getInfo());//老师;
        s.test();//老师;老师;
    }
}
class Father{
    private String info = "student";
    public void setInfo(String info){
        this.info = info;
    }
    public String getInfo(){
        return info;
    }
}
class Son extends Father{
    private String info = "学生";
    public void test(){
        System.out.println(this.getInfo());//调用当前对象的get方法,如果
        // 没有则从所从父类中继承过来的属性和方法中调用;
        System.out.println(super.getInfo());//直接调用父类里面的get方法;
    }
}


/**
 *
 * 1、私有的属性是否可以被继承到子类中?
 * (1)如果从可以访问性的角度来说:不能,因为在子类中不能直接访问父类的私有的属性,但是可以通过get/set操作
 * (2)如果从类的概念来说,
 * 类是一类具有相同特性(属性、方法等)的事物的抽象描述,
 * 那么子类是从父类派生出来的,那么子类是有父类的这个特征的,即有这个属性的
 *
 * 2、每一个对象的非静态属性是独立的,其中一个对象修改和另一个对象是无关的
 *
 * 3、当子类有与父类的属性同名时,那么通过子类对象调用get/set方法操作的是父类继承还是子类自己的属性呢?
 * 要看子类是否重写:
 * 如果没有重写,操作的都是父类的,不管是直接getInfo()还是this.getInfo(),还是super.getInfo()
 * 如果重写了,如果通过子类对象调用,操作的是子类的,例如:getInfo()还是this.getInfo(),
 * 		如果通过super.调用的,操作的是父类的。
 *
 */

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值