子类继承父类的哪些成员

先写父类还是先写子类:
一般我们在开发中先编写多个自定义类,写完之后发现多个类之间存在相同的代码,此时可以抽取一个父类。
我们以后做开发,都是基于框架/组件来做的,我们是在别人的基础之上继续开发。

好比别人提供清水房,我们只需要在清水房的基础之上装修,就可以使用。

以后,我们定义新的类回去继承与框架中/组件中提供的父类。

--------------------------------------------

子类继承父类之后,可以拥有父类的某些状态和行为,(子类复用了父类的功能或状态)。
子类继承父类的哪些成员(根据访问修饰符来判断):

1:如果父类中的成员使用public修饰,子类无条件继承。
2:如果父类中的成员使用protected修饰,子类也继承,即使父类和子类不在同一个包中。
3:如果父类和子类在同一个包中,此时子类可以继承父类中 缺省修饰符的成员。
4:如果父类中的成员使用private修饰,子类打死也都继承不到。private只能在本类中访问。
5:父类的构造器,子类也不能继承,因为构造器必须和当前的类名相同。

-----------------------------------------------------------------------------------

方法重载和方法覆盖(方法)的区别:
方法重载:Overload
方法重写:Override

批判,本身二者一点关系都没有,仅仅只是因为名字很像。

--------------------------------------------

方法重载:Overload
作用:解决了一个类中,相同功能的方法不同的问题。
既然是相同的功能,那么方法的名字就应该相同。
规则:两同一不同
同类中,方法名相同,可能参数列表不同(参数类型、参数个数、参数循序)。
方法重写:Override
作用:解决子类继承父类之后,可能父类的某一个方法不满足子类的集体特征,此时需要重新在新类中定义
该方法,并重新写方法体;
规则:一同两小,一大;
一同:父类和子类的方法签名是相同的,所以。建议:直接拷贝父类中方法的定义到子类中,在重写的方法体,就OK了;

--------------------------------------------------------------------

Super关键字

需求,在类中的某一个方法中,去调用父类呗覆盖的方法;

此时的解决方法:使用super关键字:

this: 当前对象,谁调用this所在的方法,this就是哪一个对象。
super: 当前对象的父类对象。


------------------------------------------------------------------------


子类初始化过程:创建子类对象的过程:

在创建子类对象之前,会先创建父类对象,
调用子类构造器之前,在子类构造器中,会先调用父类的构造器,
默认调用的是父类无参数构造器....

1:如果父类不存在可以被子类访问的构造器,则不能存在于子类;
2:如果父类没有提供无参数构造器,子类必须显示通过super语句去调用父类带参数的构造器。
(必须先有父类对象,而后才有子类对象)
(必须先调用父类构造器,而后再调用子类构造器)

例子:

//父类
class Animal{
  private String name;//私有 名字
  private int age;//私有的字段名 年龄
  Animal(String name,int age){
  System.out.println("Animal构造器");
  this.name = name;
  this.age = age;
}

public String getName(){
  return name + "," + age;
  }
}
//子类
class Fish extends Animal{
  private String color;

  Fish(String name,int age,String color){
    super(name,age);
    this.color = color;
  }

  public void say(){
    System.out.println(getName() + "," + this.color);
  }

}


//子类初始化过程:创建子类对象的过程
public class EditPlus{
  public static void main(String[] args){
    Fish f = new Fish("Animal",5,"橙黄色");
    f.say();
  }
}

原文地址:https://www.cnblogs.com/patriot/p/6855750.html