程序与生活是息息相关的,在生活中的关系和对象,我们在计算
机中用编程语言来描述。继承这个概念与生活中的子承父业是一样的
道理。例如树是一个父类,松树,白杨等等都继承了它成为它的子类
。
继承的关键字是extends,格式为:
public class 类名(子类类名) extends 类名(父类类名)
子类继承了父类的所有属性和方法,但是能调用的只是public和
protected,private不能调用。不在一个包下只能调用public的属性
和方法。
例如我们通常使用的JFrame,我们要建一个窗口,就得先继承
java给我们提供的JFrame,这样我们就不用定义具体如何创建窗口,
直接调用它的方法就可以,这真是一个省时省力省脑的好办法。
继承了父类,我们常常还要加上一些自己的东西,在父类原先的
方法中改变或者添加一些东西,这就叫做方法重写。
调用方法的格式为:
访问修饰符(public,protected) 返回值类型 方法名(参数){方法
体
}
注意重写的时候返回值类型和方法名不能改变,只有访问修饰符
可以从小范围改成大范围,即可将protected改成public,也可不改。
private是没有办法重写的,因为子类无法调用父类的private方法。
举一个方法重写的例子,例如我们现在要在窗口上画画,但是窗体上
是不允许直接画的,要么在上面加一个面板JPanel,然后再Jpanel上
画,要么进行方法重绘。窗体本身就有一个方法paint用来绘制所有它
上面的东西,而我们现在只需要调用这个方法,注意重绘的时候返回
值类型,参数都不能改变,能改变的只是方法体。所以我们将我们要
加上的东西写在方法体中。特别要注意应该最开始的时候实现一下父
类中的方法,因为一旦重写之后,程序运行时调用了子类中重写的方
法,父类中的就不会再用。程序如下
public void paint(Graphics g){
super.paint(g)//调用父类中的方法
g.drawLine(100,100,200,200)//在窗体上画一条横线,
//(100,100)是起始坐标,(
//200,200)是结束坐标
}
注意这是我们创建的窗体继承JFrame之后的才能进行的操作,不继承
的话是没有paint这个方法的。
机中用编程语言来描述。继承这个概念与生活中的子承父业是一样的
道理。例如树是一个父类,松树,白杨等等都继承了它成为它的子类
。
继承的关键字是extends,格式为:
public class 类名(子类类名) extends 类名(父类类名)
子类继承了父类的所有属性和方法,但是能调用的只是public和
protected,private不能调用。不在一个包下只能调用public的属性
和方法。
例如我们通常使用的JFrame,我们要建一个窗口,就得先继承
java给我们提供的JFrame,这样我们就不用定义具体如何创建窗口,
直接调用它的方法就可以,这真是一个省时省力省脑的好办法。
继承了父类,我们常常还要加上一些自己的东西,在父类原先的
方法中改变或者添加一些东西,这就叫做方法重写。
调用方法的格式为:
访问修饰符(public,protected) 返回值类型 方法名(参数){方法
体
}
注意重写的时候返回值类型和方法名不能改变,只有访问修饰符
可以从小范围改成大范围,即可将protected改成public,也可不改。
private是没有办法重写的,因为子类无法调用父类的private方法。
举一个方法重写的例子,例如我们现在要在窗口上画画,但是窗体上
是不允许直接画的,要么在上面加一个面板JPanel,然后再Jpanel上
画,要么进行方法重绘。窗体本身就有一个方法paint用来绘制所有它
上面的东西,而我们现在只需要调用这个方法,注意重绘的时候返回
值类型,参数都不能改变,能改变的只是方法体。所以我们将我们要
加上的东西写在方法体中。特别要注意应该最开始的时候实现一下父
类中的方法,因为一旦重写之后,程序运行时调用了子类中重写的方
法,父类中的就不会再用。程序如下
public void paint(Graphics g){
super.paint(g)//调用父类中的方法
g.drawLine(100,100,200,200)//在窗体上画一条横线,
//(100,100)是起始坐标,(
//200,200)是结束坐标
}
注意这是我们创建的窗体继承JFrame之后的才能进行的操作,不继承
的话是没有paint这个方法的。