Java 类的继承
package com.study1;
public class Exercise2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Pupil stu=new Pupil();
stu.name="小明";
stu.address="风水山";
stu.ayl(300f); //注意:这个用法是类中方法中有一个带参数的不返回值的方法。
System.out.println("姓名: "+stu.name+" 年龄: "+
stu.age+" 住址 : "+stu.address+" 学费: "+stu.fee);
Kid k1=new Kid();
k1.name="小丫";
k1.fee=1000f;
System.out.println("姓名: "+k1.name+" 学费: "+k1.ayl1());
}
}
class Student1
{
public String name;
protected int age;
protected float fee;
String address;
public void getName()
{
System.out.println(name);
}
}
//==通过继承,使类“Pubip”继承了父类“Student”中的类变量和类方法。
class Pupil extends Student1
{
public void ayl(float fee) //创建了一个不返回值带参数的方法。
{
this.fee=fee*0.4f;
//System.out.println(this.fee);
}
}
class Kid extends Pupil
{
public float ayl1()//创建了一个不带参数的返回方法。
{
return this.fee*0.8f;
}
}
注意:在类的继承中,父类的构造函数是不能被继承具体如下:
特殊性
(1)作用:给对象进行初始化,对象一建立就执行,而且优先于构造函数执行
(2)构造代码块和构造函数的区别:
构造代码块是给所有不同对象的共性进行统一初始化,构造函数是给对应的对象进行初始化
***子类的实例化过程
***构造方法不能被子类继承
***子类创建对象时,会先去创建父类的对象。
默认是去调用父类的无参构造方法。
***子类构造方法中,第一行默认是super()
***为什么子类中第一行会默认有super()
因为他继承父类的成员使用,使用前这些成员必须初始化,
而他们是父类的成员,所以,必须通过父类进行初始化。
所以,会先创建一个父类的对象。
**当父类没有无参构造方法时
如果想使用无参的构造方法,就必须手动给出无参构造方法。
建议:一般情况下,我们自定义的类都要手动给出无参构造方法。
![](https://img2018.cnblogs.com/blog/1628490/201903/1628490-20190313092227188-1156174802.png)