继承子类与父类

一.类与类之间的关系

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));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值