再说继承:
继承是类与类之间的一种关系,对于一个参数,在继承之后,会在子类中隐藏自动的加上一个代码块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();
}
}