重载(overload)
1.重载建立在继承之上的。
2.只跟重载方法的参数和个数有关系。
3.属于多态中的一种。
4.子类可以对父类继承过来的方法的重载。
无参和带参的构造方法就属于重载
1.参数的个数不同
2.参数的类型不同
在People文件里:
在Test(测试)文件里:
重(覆)写(overrite)
概念:子类中出现与父类一模一样的方法时,会出现子类方法将父类方法覆盖的情况,这种情况成为重写或者复写
特点:
1.建立在继承基础之上
2.子类对象执行这个重写方法时,只执行此重写方法,不会执行从父类继承过来的同名方法。重写方法覆盖从父类继承过来的方法。
3.子类的权限不能小于父类的权限。
重写注意事项
(1)父类中的私有方法不可以被重写,覆盖!
(2)子类重写父类方法后,继续使用父类的方法时候,可以使用super调用
(3) 重写时,子类的方法的访问权限要大于或者等于父类成员方法的访问权限
(4)静态方法只能被静态方法覆盖
(5)子类对于父类的功能有增强需求的时候,可以重写父类的方法以增强其功能!
重载何时使用:
当一个类中需要完成某个相同功能,但是方法的参数不同需要分别进行操作时!
重写
与重载
的区别
重写:子父类之间,方法完全相同(返回值、方法名、参数列表), 但是子父类之间的方法体必须不同,否则没有意义!
重载:同一个类中,方法名相同,参数列表不同,与返回值无关!(参数列表:包括两项:参数个数,对应参数的数据类型)
构造方法
a、子类中所有的构造方法默认都访问父类中无参构造
b、每个构造方法的第一行是super();super(参数列表);如果把这两行代码放在非第一行位置会报错
c、根据构造方法的特性,在手动给出任意一个构造方法的时候,之前默认的无参构造会被覆盖,此时具有继承关系的时候,子类之前默认存在的每个构造都调用无参构造super();失效,此时必须在每个构造方法中手动给出super(参数列表);的方式直接或间接调用之前手动在父类中给出的构造
d、构造方法执行了一定会创建相应对象吗?
不一定,当具有继承关系的类时,子类创建对象的时候会调用父类的构造方法,用来初始化父类的成员变量这个时候父类的构造执行了,但是内存中并没有父类的对象!
e、构造方法是否可以被重写或者继承?
不可以,因为构造方法名需要与类名相同,假如出现继承或者重写关系,就会有子类中有一个与父类的类名相同的构造方法,但是又由于构造方法需要与类名相同,此时子类类名需要与构造相同,这个时候就会出现父类与子类的类名相同,父类类名==构造方法名==子类类名,不能存在同名的类!
类结构(代码模型):
Public class Phone{
// 1.属性的定义区域
Pricate double price;
// 2.构造方法
public Phone(){
}
// 3.setter和getter定义区域
public void setBrand(String brand){
}
// 4.普通方法
Public void call(){
}
}
POJO 简单的java类(MVC中M即model)
POJO 有哪些要求?
1 类名称必须有意义。明确可以描述某一类事物,比如动物,汽车。。。
2 类中的属性必须private修饰,封装后的属性使用setter和getter方法
3 类中可以定义多个构造方法,但是必须保留一个无参的构造方法(反射使用)
4 类中不允许出现任何的输出语句,所有的输出都通过调用来完成。
5 类中可以提供一个获取对象完整信息的方法
6 类中没有复杂的逻辑结构(判断,循环几乎没有),只是一个单纯显示类的基本信息。