方法的重载和覆盖
重载(overload):在一个类中重载多个方法,方法名相同,参数形式、数量不同
重载的规则:
1、重载时只能通过相同的方法名、不同的参数形式实现,可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样);
2、不能通过访问权限、返回类型、抛出的异常进行重载;
3、方法的异常类型和数目不会对重载造成影响;
覆盖(override):重写一个方法,用以实现不同的功能,一般是子类重写父类的方法
重写(覆盖)的规则:
1、参数列表必须完全相同,否则不能称其为重写而是重载.
2、访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。
3、返回值必须和被重写的方法的返回一致;
4、抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;
5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。
6、静态方法不能被重写为非静态的方法(会编译出错)。
继承(extends):继承父类的全部功能,只能有一个继承
实现(implements):实现接口中所定义的方法,可实现多个接口
默认构造器:Java类中有默认的无参构造器,格式为<class_name>(){},作用是根据类型为对象提供默认值,0或null...
有参构造器:为不同的对象提供不同的初始化参数,构造方法也可以进行重载
构造函数与方法之间的区别
Java构造函数 | Java方法 |
---|---|
构造器用于初始化对象的状态(数据)。 | 方法用于暴露对象的行为。 |
构造函数不能有返回类型。 | 方法一般都有返回类型。 |
构造函数隐式调用。 | 方法要显式调用。 |
如果没有指定任何构造函数,java编译器提供一个默认构造函数。 | 在任何情况下编译器都不会提供默认的方法调用。 |
构造函数名称必须与类名称相同。 | 方法名称可以或可以不与类名称相同(随意)。 |
成员变量:定义在类中,类中都可以访问;存储在堆内存的对象中;有默认初始值
局部变量:作用于局部,局部访问;存储在栈中,随作用域结束而清除;没有初始值
变量使用时遵循 就近原则
静态变量(方法):随着类的加载存在,类消失而消失;可通过类名调用;存储在方法区的静态区;对象之间共享
对象的作用域通过{}来分割