JavaOO 中的继承问题

继承是一种类和类的关系,比如小汽车类和汽车类,小汽车类继承了汽车类,小汽车就叫汽车类的子类或者派生类,汽车就是小汽车的父类或者基类,继承的好处就是子类可以继承父类的属性和方法,特别提醒private修饰符不能够被继承
语法: class 子类 extends 父类{}
eg:class coupe extends Car{
…………….
}
实际应用:

//父类
public class Car{
public int height;
public int weight;
private int MaxSpeed;//私有属性
public String logo;
public void drive(){
  System.out.println("父类的方法被调用");
}
}
//子类
public class Coupe extends Car{

}//子类已经被创建 可以在main函数中调用coupe的方法和属性(从父类继承而来)
public class Test{
  public static void main(String[] args){
       Coupe coupe = new Car();//子类的实例化
       coupe.height = 1;//继承父类的属性 并且可写
       coupe.weight = 3;
       coupe.MaxSpeed = 100;//会报错因为是私有属性
       coupe.drive();//继承父类的 方法 drive
   }
}


----------
子类还可以拥有自己的方法和属性(重写)
//子类
public class Coupe extend Car{
    public void drive(){
      System.out.println("drive方法已经重写");//优先调用子类的方法
   }
}

那么继承的初始化顺序是什么样的呢?
先初始化父类再初始化子类
先执行初始化对象中的属性再执行构造方法中的初始化
eg:

public class Car{
public int height = 1;//先将height赋值
public int weight;
private int MaxSpeed;//私有属性
public String logo;
public void drive(){
  System.out.println("父类的方法被调用");
}
//构造方法
public Car(){
  System.out.println("父类执行了");
  height = 2;//更改height
}
}
//子类
public class Coupe extends Car{
// 构造方法
    public Coupe(){
      System.out.println("子类执行了");
    }
}//子类已经被创建 可以在main函数中调用coupe的方法和属性(从父类继承而来)
public class Test{
  public static void main(String[] args){
       Car car = new Car();
       System.out.println("height:"+height);// Console显示为2;
       Coupe coupe = new Car();//子类的实例化
       coupe.height = 1;//继承父类的属性 并且可写
       coupe.weight = 3;
       coupe.drive();//继承父类的 方法 drive
   }
}
//Consloe中 会显示
父类执行了
子类执行了
父类的方法被调用
//但是先进行父类的构造方法的初始化 还是属性的初始化呢?
//可以在构造方法中再添加一个数据 跟据最后输出什么来判断先初始化构造方法还是                 //先初始化属性



----------
上述更改height在构造器中的值证明先初始化属性在初始化构造方法

创建子类对象时1.先创建父类对象进行属性初始化。2.初始化父类的构造方法 3.再初始化子类的属性4.初始化子类的构造方法。


你可能感兴趣的:(java)