一.类与类之间的关系
1.横向关系
组合
依赖
聚合
关联
2.纵向关系
泛化
实现
二、继承
类与类之间呈现上下级关系,通过继承可以对已有的类进行扩展,从而提高程序的扩展性,既保留原有功能,有增加新特征
继承关系的实现
修饰符 子类 exten 父类{
}
public class Demo4 extends Demo3{
}
子类可以继承父类所有非私有的资源
1.继承的特点
1、Java只能单继承
2、可以多重继承(A extends B,B extends C)
3、子类在构造对象时,首先执行父类构造器进行初始化(没有创建父类对象)
4、假如父类没有无参构造,子类要创建相同构造器使用super对父类构造器进行调用
5、构造器不能被继承,只能被调用
6、子类可以使用父类的非私有资源,但是父类不能使用子类的资源
2.this&super
this关键字
在当前类中,使用当前对象,用this表示
在类中调用其他构造方法(很少使用)
public Demo3(String username,String password,String sex){
this(); //在类中this加括号就是调用构造方法
this.username = username;
this.password = password;
this.sex = sex;
}
在类中调用构造方法只能出现在构造器种
只能出现在构造器的第一行
在类中调用其他资源
public void Dome4(){
int username = 0;
this.username = "2e3";
this.setUsername("关羽");
System.out.println("我可以学习");
}
super关键字
在子类中调用父类的构造方法
public Demo4(String username, String password, String sex, double money, boolean marry) {
super(username, password, sex, money, marry);
}
super()必须出现在第一行
不能出现在普通方法中,只能出现在构造器中
在子类中调用父类的其他资源
public void setA(int a ){
this.a = a; //调用自己的
super.getUsername();
super.studay(); //调用父类方法
}
三、方法的重写
方法重写是实现多态的一种策略,他是由继承衍生出来的一种概念,子类继承父类之后,重写定制父类的方法,从代码层面来看,父类的方法满足不了子类的需求,子类将父类的方法重写,这个方法称为方法重写
Father
public class Father {
public void study(){
System.out.println("种地");
}
}
Son(子类)
public class Son extends Father{
public void study(){
System.out.println("正在学习编程");
}
}
方法重写注意点:
1、必须存在继承关系
2、子类重写父类的方法
3、重写的方法名必须和父类的方法名相同
4、参数列表必须一致
5、返回值必须相同
6、 访问权限不能低于被重写父类方法
三、Object类
object类是所有Java类的祖先,任何时候创建的类都默认继承object类,object类中所有方法都可以被继承到子方法,子方法可以对这些方法重写,从而实现具体业务要求,常见方法:
equals方法和hashcode方法
重写equals和hashcode方法,让对象比较时不在比较地址,而是比较成员变量值和hashcode值
tostring方法
重写tostring,让对象输出不再是输出地址值,而是输出成员变量值
Objects类
objects类jdk1.7提供的一个工具类 ,他为我们提供了一个空指针安全的操作方法
public class People {
private String name;
private String sex;
private String dz;
private int price;
public People(String 农民, String 男, String 湖北, int i) {
}
}
public class Demo5{
public static void main(String[] args) {
People p = null;
People p1 = new People("农民","男","湖北",1500);
System.out.println(Objects.equals(p,p1));
}
}