构造函数
- 使用构造器时需要记住
1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)
2.每个类可以有一个以上的构造器
3.构造器可以有0个、1个或1个以上的参数
4.构造器没有返回值
5.构造器总是伴随着new操作一起调用
继承与构造函数
- 使用super调用父类构造器的语句必须是子类构造器的第一条语句
-
如果子类构造器没有显式地调用父类的构造器,则将自动调用父类的默认(没有参数)的构造器。如果父类没有不带参数的构造器,并且在子类的构造器中又没有显式地调用父类的构造器,则java编译器将报告错误
接口与抽象类
-
当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
-
类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
- 如果实现接口的类是抽象类,那么就没必要实现该接口的方法。
- 一个类可以同时实现多个接口。
- 在Java中,类的多重继承是不合法,但接口允许多重继承,。
- 抽象类的存在原因:有时候只想定义一个方法,然后它的具体实现过程在继承它的子类中定义,那就声明这个方法为抽象方法,而它存在的类,就是抽象类
- 抽象类,必须被继承为子类,才能实例化对象,并且子类除非依然是抽象类,public abstract,否则要把抽象类中所有方法都实现
- 接口的存在原因:类无法实现多重继承,一个子类继承了一个父类,同时又需要别的方法。使用接口,就可以多重继承,一个类可以实现多个接口
- 接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值
- final修饰的变量,代表只能赋值一次,以后其值就定了。对于static修饰的变量,代表静态变量。内存中只有一个拷贝,节省内存
- 抽象类也有构造函数,用于初始化抽象类中的成员。系统会自动加载一个无参构造函数,以及一个有参构造函数。如果子类继承了抽象类,实例化对象的时候,先调用父类(抽象类)的无参构造函数,如果实例化对象的时候带参数了,就先调用父类的带参构造,然后是子类的带参构造