一、类的操作
1、继承
(1、)概念
[1、]:继承是在一个现有类的基础上派生出一个新的类,新的类能吸收已有类的数据属性和行为,并能对其进行扩展方法、变量等。
[2、]:现有的类称之为父类或基类,派生出来的类称之为子类或派生类
(2、)通过extends关键字进行继承
(3、)特点
[1、]:Java的继承是单继承
[2、]:Java的继承具有传递性。
[3、]:所有类都直接或者间接继承Object类。
[4、]:子类中成员变量和父类重名,直接用时是子类的。
[5、]:在存在继承关系时,当使用new关键字创建一个子类对象时,不但要调用子类相应的构造方法,还会调用父类的构造方法。
2、方法的重写
(1、)有些时候子类需要对继承来的方法进行一些修改,即对父类的方法进行重写。
(2、)子类重写父类中的方法时,子类中重写的方法要与父类中被重写的方法具有相同的方法名称、参数列表和返回值类型。
(3、)子类重写父类方法,重写方法不能使用比被重写方法更严格的访问权限。
3、super关键字
(1、)概念
[1、]:当子类重写父类的方法之后,子类对象将无法访问父类被重写的方法。
[2、]:当子类对象中定义了与父类相同的成员变量,子类对象也将无法访问父类同名的成员变量,
(2、)super关键字用来访问父类中的非私有成员。
(3、)使用super关键字访问父类的成员变量、成员方法。
(4、)使用super关键字调用父类的构造方法。
[1、]:子类的构造方法必须调用其基类的构造方法。
[2、]:子类可以在自己的构造方法中使用super()调用基类的构造方法。
[3、]:如果使用super()调用基类的构造方法,必须写在子类构造方法的第一行。
[4、]:如果子类的构造方法中没有显式地调用基类的构造方法,那么系统自动调用基类中没有参数的构造方法。
[5、]:如果子类的构造方法中既没有显式的调用基类的构造方法,而且基类中也没有无参数的构造方法,则编译出错。
4、final关键字
(1、)final修饰的类不能够被继承。
(2、)final修饰的变量是常量,只能赋值一次。
[1、]:修饰局部变量:可以不初始化,但它只能被赋值一次。
[2、]:修饰成员变量:必须由程序员指定初始值,否则会出现编译错误。
(3、)final修饰的方法不能被子类重写。
二、抽象类(抽象类是从多个类中抽象出来的模板)
1、抽象类和抽象方法的特点
(1、)使用abstract关键字修饰的类为抽象类。
(2、)含有抽象方法的类必须声明为抽象类。
(3、)抽象类中可以没有抽象方法。
(4、)抽象类不能够被实例化,否则会出现编译错误。
(5、)抽象类只能被继承。抽象方法,必须由子类提供实现(重写)。
(6、)abstract关键字与final关键字不能同时使用。
2、抽象类是用来被继承的,继承抽象类的子类有两个选择。
(1、)部分实现或完全不实现父类的所有抽象方法,但此时子类必须声明为抽象类。
(2、)部分实现或完全不实现父类的所有抽象方法,但此时子类必须声明为抽象类。
三、接口(接口是抽象方法和常量值的集合)
1、实现方式(通过interface)
2、特点
(1)成员变量默认都是public static final类型(可省略),必须被显示初始化,即接口中的成员变量为常量。
(2)接口中的方法默认都是public abstract类型(可省略),没有方法体。
(3)接口中没有构造方法,接口不能被实例化。
(4)一个接口不能实现(implements)另一个接口,但它可以继承(extends)多个其他的接口。
(5)Java接口必须通过类来实现它的抽象方法。
(6)当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象类。
(7)一个类只能继承一个直接的父类,但可以实现多个接口,间接实现了多继承。
(8)如果一个类既要继承父类,又要实现某接口,那么在编写格式上要先继承父类,再实现接口。