继承: extends
1.提高代码的复用性
2.让类与类之间产生了关系。有了这个关系,才有了多态的特性
注意:千万不要为了获取其他类的功能,简化代码而继承;必须是类与类之间有所属关系才可以继承。
JAVA中只支持单继承,而不继承多继承。因为多继承容易带来安全隐患。当多个父类中定义了相同的功能,当功能内容不同时,子类对象不确定运行哪一个。
JAVA支持多层继承:简单来说就是a继承b,b继承c。这就是一个继承体系
如果想要使用一个继承体系中的功能,那就要先查阅体系父类的描述,因为父类中定义的是体系中共性功能。通过了解共性功能就可以知道该体系的基本功能。
在具体调研时,要创建最子类的对象。因为有可能父类不能创建对象,或者是创建子类对象可以使用更多的功能。包括基本的和所有的
当多个类中出现相同功能,但是功能主体不同,这时可以向上抽取,这时只抽取功能定义,而不抽取功能主体。这时方法的内部没有功能主体。
这时我们要用abstract来标识方法。如: abstract void student();
抽象:看不懂
1.抽象方法一定在抽象类中。
2.抽象方法和抽象类都必须被abstract关键字修饰
3.抽象类不可以用new创建对象。因为调用抽象方法没意义。
4抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象所用。如果子类只覆盖了部分抽象方法,那么这个类还是一个抽象方法
聚集:谁里面有谁就是聚集
子父类出现后,类成员的特点:
父类的东西,子类都可以调用
类中的成员:
1.变量:如果子类出现非私有的同名成员变量时,子类要访问本类中的变量,要用this。子类要访问父类中的同名变量,用super。super的使用和this的使用几乎一致。this 代表子类的引用。super代表父类的引用
2.函数:当子类出现和父类一模一样的函数时,当子类对象调用该函数,会运行子类函数的内容。如同父类的函数被覆盖意义。这种情况时函数的的另一个特性:重写(覆盖)
3.构造函数:
super()调用的是父类构造函数,this()调用的是本类的构造函数
在对子类的对象进行初始化时,父类的构造函数也会运行。因为子类的构造函数默认第一行有一条隐式的语句 super(). super()会访问父类的中空参数的构造函数,而且子类中所有的构造函数默认第一行都是super().
final关键字:最终的意思
1.final作为修饰符,可以修饰类,变量,函数。
2.被final修饰的类不可以被继承。为了避免被继承,被子类复写功能,就在类前面加个final
3.被final修饰的方法不可以被复写
4.被final修饰的变量是一个常量,只能赋值一次,既可以修饰成员变量。又可以修饰局部变量。
5.内部类定义在类中的局部位置时,只能访问该局部被final修饰的局部变量
当描述事物时,一些数据的出现是固定的。为了增强阅读性。都给这些值取个名字方便阅读。而这个值不需要改变。所以用final修饰应用
常量的书写格式:所以字母都大写,如果有多个单词组成,单词之间用_连接
this代表本类对象的引用,super代表父类对象的引用
覆盖:子类必须知道父类的功能
1.子类覆盖父类,必须保证子类的权限大于等于父类权限,才可以覆盖,否则编译失败
2.静态只能覆盖静态
重载:只看同名函数的参数列表
重写:子父类方法要一模一样
接口:
初期可以理解为一个特殊的抽象类,当抽象类中的方法都是抽象的,那么该类可以通过接口形式来表达。
格式:interface{}. class定义类,interface定义接口
定义接口时,格式特点:
1。接口中常见定义:常量。抽象方法
2.接口总的成员都有固定修饰:常量 public static final 方法 public abstrcat
接口中的成员都是public的。
接口不可以创建对象,因为接口有抽象方法
类与类之间是继承关系,类与接口之间关系为实现。关键字为implements
接口可以被类多实现。也就是一个类可以实现多个接口。接口中的方法没有实现主体,所以可以多实现。
一个类继承一个类后还可以实现多个接口。
接口与接口之间为继承关系。接口存在多继承