从零开始学JAVA DAY6
再说继承:
继承是类与类之间的一种关系,对于一个参数,在继承之后,会在子类中隐藏自动的加上一个代码块super()
关键字:super
原本学了一个this关键字,在复习一下,this关键字是该类直接调用对象进行操作,而super也差不多,只是调用的是父类
为什么要有这样一个代码块super()/this()呢? 就是为了初始化父类的一些数,因为在子类中要调用这些函数或者值,那么先把它初始化成与父类相同,防止错误
那么自动加了这个初始化后,一创建子类,那么会先执行父类中的初始化函数
class Fu { Fu(){ System.out.println("Fu"); } } class Zi extends Fu { Zi(){ System.out.println("Zi"); } } class Demo { public static void main (String[] args) { //Fu fu = new Fu(); Zi zi = new Zi(); } }
输出 Fu
Zi
子类可以覆盖父类的函数,可以利用这一点来拓展程序,但是我们如果只要调用这个父类中的4个函数,而不需要6个函数时,我们可以使用final修饰符
final修饰符:最终的意思
可以作用于定义常量 final int PI = 3.14 一旦定义就无法再进行更改(常量一般全用大写字母来表示)
可以作用于函数 一旦这个函数被final 修饰,它就不能被继承或者聚合
继承除了extends关键字之外还有另一个关键字implements
implements 实现:
其中子类中所有的功能都是抽象的需要自己来实现,继承虽然只能一个但是接口能多个,中间用,隔开
比方说
class Zi extends Fu implements Fu1, Fu2
这是要引入接口概念:
初期理解:
是一个特殊的抽象类,如果抽象类中的方法都是抽象的,那么该类可以通过接口形式来表示
抽象类里里面才有抽象方法
修饰符:abstract抽象 不需要具体的实现
接口:interface 是一个特殊类,里面全是抽象的
类与接口之间是实现关系 implements
实现方法:
interface B
{
}
class A implement B
{
}
类与类之间,接口与接口之间是继承关系 extends
接口不可以创建对象,需要被子类实现,要把所有抽象函数都具体化覆盖
interface inter
{
public abstract void show();
}
里面有固定格式
常量: public static final int X = 3;
函数: public static final void show();
所以在被调用时记得提高权限public
接口与继承:接口能多继承而父类子类只能单继承的原因
一个子类如果能多继承如果有两个父类有相同的函数,那么会矛盾
而接口中没有具体的实现方法
接口的应用:
interface 相当于一个引导,里面没有具体的方法体
可以写成 void show();
而类中有具体的方法体 void show(){}
除了interface 如果一个类里面的方法体无法确定那就用abstract 抽象
接口实例
interface smoking { void smoke(); } abstract class student { abstract void study();//因为方法体为抽象所以类名要改成抽象 void sleep(){ System.out.println("sleep"); } } class people extends student implements smoking { void study(){ } public void smoke(){ } } class demo { public static void main(String[] args) { people zhangsan = new people(); zhangsan.sleep(); } }