四、面向对象(三)Java继承

今天的博客主题

      基础篇 --》面向对象 --》Java继承


什么是继承?

Java中的继承是一种机制,表示为一个对象获取父对象的所有属性和行为。

Java中的继承与生活当中的继承还是有去区别的。

Java中的继承就是子类继承父类的特征和行为。

父类比较通用,子类比较具体。

谁继承了父类谁就是这个父类的子类。

继承是避免冗余,提高代码的可重用行和可维护性的有效手段。

继承的传递性:直接父类 间接父类

继承概念下的 is-a 关系是个单向的关系,子类具有父类的属性和行为,以及自身特殊的属性和行为。

Java中的继承是一种机制,表示为一个对象获取父对象的所有属性和行为。

 

继承有什么优点?

  1. 使用继承可以实现代码的复用,减少代码冗余
  2. 子类可以直接“拥有”父类中所有允许子类继承的属性和方法
  3. 子类可以改变父类中已有的方法,执行不同的代码实现

 

怎样实现一个继承?

实现继承需要 (extends)关键字

例:

public class Person {
    private String name;
    private String age;
    private double money;

    // ...省略Setter Getter方法...
}

public class Man extends Person{
}

这样Man类就继承了Person类,Person类就变成了父类,Man类就是Person类的子类。

Man就拥有了Person类里的所有属性和方法。

 

为什么要使用继承?

例如:人类,有男人和女人,都有公共的状态:姓名、年龄、生日。

也有相同的行为:吃饭,睡觉,当然也有不一样的,比如女人可以生孩子,男人不可以(是在想不出来比这个好一点能区分的行为了)

如果按照这个需求,没有继承,那我们的代码将会是下边这个样子。

 

// 男人类
public class Man {
    private String name;
    private String age;
    private Date boriday;
    // ...省略Setter Getter方法...
}
// 女人类
public class Woman {
    private String name;
    private String age;
    private Date boriday;
    // ...省略Setter Getter方法...
}

使用继承之后代码就变成这样了

// 人类  抽出共同特性
public class Person {
    private String name;
    private String age;
    private Date boriday;
    // ...省略Setter Getter方法...
}
public class Man extends Person{
}
public class Woman extends Person{
}

这样Man类,Woman类里面公有的属性都抽取到了Person类里面,那如果那增加个学生类,学生也有姓名年龄生日,

那就直接定义好学生类名,使用extends关键字继承Person类行了,当然每个类里面在可以继续实现和别的类不同的属性方法。

那如果子类不想使用父类的方法呢?父类可以把这个方法设为私有方法,那如果别的类继承这个父类要用这个方法呢?反正都已经继承过来了,可以不用管自己写一个,或者重写一下父类中的这个方法也成。

比如人类都有行为吃饭睡觉,那这个行为也可以增加到person类里面去,Person类就是一个简单吃饭的方法,而学生吃饭不想简单的吃一下person类当中的饭,

 

学生类就可以重写person类里吃饭的方法。

例:

在person类增加eat()方法

 

public void eat(){    
    System.out.println("简单的吃个饭");
}

增加学生类继承Person类

 

public class Student extends Person {
}

//测试
public class TestDemo {
    public static void main(String[] args) {
        Student s = new Student();
        s.eat();
    }
}
输出结果:简单的吃个饭

吃饭学生不想简单吃个饭,怎么办呢?改造Student类

public class Student extends Person {
    @Override
    public void eat(){
        System.out.println("吃个学生套餐");
    }
}

//测试
public class TestDemo {
    public static void main(String[] args) {
        Student s = new Student();
        s.eat();
    }
}
输出结果:吃个学生套餐

这样Student类重写了Person类的eat方法。

重写使用 @Override 关键字来标识。

一个类当中是无法实现重写的

 

注意:

    一个子类只能有一个父类

    一个父类可以有多个子类

    子类继承父类,父类派生子类

 

为什么要用继承?

说到这大概就知道了为什么要用继承了吧

  1. 提高代码的重用性
  2. 提高程序的扩展性

简单说就是 继承重用父类代码,为多态做准备

如果一个类没有任何继承,那么会默认继承Object类。

 


学而不思则罔

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值