1.提高了代码复用性。
2.让类与类之间产生关系。有了这关系,才有了多态的特性。
1.变量当变量如果子父类中出现非私有的同名成员变量时。子类要访问本类中的同名变量,用this,代表子类对象的引用。子类要访问父类中的同名变量,用super 代表父类对象的引用,super的使用和this的使用一样。2.函数当子类出现与父类一模一样的函数时,父类的函数会被覆盖。保留父类功能的定义,并修改父类功能的内容。函数的另一种特性:重写(覆盖)覆盖1.子类覆盖父类,必须保证子类的权限大于等于父类。2.静态只能覆盖静态。(开发不常见)3.子父类中的构造函数在对子类对象进行初始化时,父类的构造函数也会运行。那是因为子类的构造函数默认第一行有一条隐式的语句 super();super();会访问父类中的空参数的构造函数,而且子类中所有的构造函数第一项默认的都是super();子类一定会去访问父类的默认构造函数,如果不想访问默认构造函数可以手动添加super();
super语句一定是定义在子类构造函数的第一行。子类所有的构造函数,都会访问父类中空参数的构造函数。以为子类的每一个构造函数的第一行都有一句隐式super();
final(最终);修饰符;修饰:类,函数,变量(成员变量和局部变量)。
1.被final修饰的类不可以被继承,为了避免被继承,被子类覆盖。
2.被final修饰的函数不可以被覆盖。
3.被final修饰的变量是一个常量只能赋值一次。可以是成员变量,也可以是局部变量。
在描述事物是,一些数据的值是固定的,那么为了阅读性,给这些固定的值器个名字。 而这是值不需要变化,所以加上final修饰。 常量的书写规范,所有字母大写,如果由多个字母组成格式为: 单词_单词 4.内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。
例子:
public static final PAI = 3.14; //加上静态可以让这个类常量被多个函数使用。
//类常量不能定义于main主函数中。
abstract(抽象);修饰符;修饰:类,函数
当多个类中出项相同功能定义,当时功能主体不同。
这时可以向上抽取。这时,只抽取功能定义,不抽取功能主体。
抽象类(就是需求,定义一些简单的需求,让子类来具体实现该需求的主要功能)1.抽象方法一定要定义在抽象类中。
2.抽象方法和抽象类都必须被abstract修饰。3.抽象类不可以用new创建对象。因为抽象方法没有意义。 如果抽象类中不定抽象方法,这样做仅仅是不让该类建立对象。 4.子类必须复写父类中所有的抽象方法后,才可以建立对象。 也就是说抽象类一定会被复写,强迫子类复写。
接口:初期理解,可以认为是一个特殊的抽象类。
当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。
接口是对外暴露的规则接口是程序的功能扩展接口可以用来多实现接口与接口可以继承类与接口是实现关系,而且类继承类的同时可以实现多接口。
interface(接口):定义接口1.接口中常见定义:常量,抽象方法。2.接口中的成员都是用public修饰的。3.接口中的成员都有固定修饰符。 常量:public static final 方法:public abstract4.接口是不可以创建对象的,需要子类覆盖接口中所有的抽象方法,子类才可以实例化,否则子类还是一个抽象类。 implements(实现):衔接类与接口,接口与接口