day13 继承 方法重写 访问修饰符

一、 继承

   Java中子类继承了父类的私有属性及方法吗?_子类能继承父类的私有属性吗_shadow_zed的博客-CSDN博客

子类可以继承父类的所有非静态(unstatic)属性和非静态方法,包括所有私有和公用的

java官方文档表示子类不能继承父类私有的属性和方法

子类对象确实拥有父类对象中所有的属性和方法,但是父类对象中的私有属性和方法,子类是无法访问到的,只是拥有,但不能使用。就像有些东西你可能拥有,但是你并不能使用

  子类对象可以通过get和set间接访问父类私有属性。



二、访问修饰符

day13 继承 方法重写 访问修饰符_第1张图片

1.访问权限范围: public> protected > default > private 

2.同包子类权限等同于同包类

3.protected 修饰的方法是指子类对象  可以访问 父类的 成员属性

其他包中 创造的父类对象无法访问父类成员属性

day13 继承 方法重写 访问修饰符_第2张图片 //部份会报错

 

day13 继承 方法重写 访问修饰符_第3张图片

 bird 类不能用 private 修饰的原因

为什么类访问修饰符不能用private、protected_ue中private不能用_a sleeping coder的博客-CSDN博客

day13 继承 方法重写 访问修饰符_第4张图片

 所以bird类放在Pet当中就可以用private protected

bird类放在public修饰的主类Pet外的话,就只能用  default 、 public




三、方法的重写

方法重写的定义   

遵循原则

day13 继承 方法重写 访问修饰符_第5张图片

 子类返回值类型是父类或者父类的返回值类型的子类类型

day13 继承 方法重写 访问修饰符_第6张图片

 @override的作用



四、super关键字

子类的构造方法默认调用父类的无参构造方法

隐藏了super();

父类更改构造方法,子类需要重新定义super();

super可以调用父类的非静态方法 属性

super必须在构造第一行,所以与this不能同时出现

你可能感兴趣的:(面向对象,java)