java se部分复习面向对象特性之继承

  • 继承是面向对象三大特性之一,所谓继承,可以简单理解为子类继承父类,子类拥有父类的属性和方法,子类可以对父类的属性和方法进行修改,子类也可以增加方法和属性;
  • 通过继承,我们可以简化类的设计,从而直接拥有某个类的方法和属性
  • 通过继承,我们可以将一些类中具有相同属性和行为特征(方法)抽取出来,抽象成一个父类,让这个父类拥有这些属性和方法,从而在定义其他子类时,通过继承父类的方法来简化设计,达到继承这个特性;
  • 比如,现实生活中的很多例子,我们在动物园中肯定会见到各种各样的动物,这些动物都有一些特征(可以理解为java中的属性)和行为(可以理解为java中的方法),比如,动物都有年龄,名字等属性,有吃、喝、睡觉等行为特征,我们把这些属性和方法定义为一个animals类,然后让各种动物(猫,狗)继承animals这个类,从而简化了类的设计,在写代码的同时可以简化;
//动物类
public class Animals {
    String name;
    int age;
    String sex;

    public Animals() {
    }

    //父类中的方法
    public void eat(){
        System.out.println(this.name+"正在吃饭");
    }
    public void drink(){
        System.out.println(this.name+"正在喝水");
    }
    public void sleep(){
        System.out.println(this.name+"正在睡觉");
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }

    public Animals(String name, int age, String sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    public Animals(String name) {
        this.name = name;
    }
}

	
public class Cat extends Animals {
    public Cat(String name, int age, String sex) {
        super(name, age, sex);
    }

    public Cat(String name) {
        super(name);
    }
    //重写方法
    @Override
    public void eat() {
        super.eat();
    }

    @Override
    public void drink() {
        super.drink();
    }

    @Override
    public void sleep() {
        super.sleep();
    }
}

public class Test {
    public static void main(String[] args) {
        Cat cat = new Cat("波斯猫");
        cat.eat();
        System.out.println("吃饱了,喝点水");
        cat.drink();
        System.out.println("吃饱喝足之后,躺会");
        cat.sleep();
    }
}

运行结果为:
在这里插入图片描述

  • 以上实例我个人觉得可以很好的理解继承这个特性吧

  • 关于java中继承的特点

    • java中是单继承,所谓单继承,就是子类只能继承一个父类,不能继承多个父类
    • java中支持多层继承关系,一个类可以是多个类的父亲,也可以是一个类的子类
  • 使用继承时,子类应该是更加详细具体的父类,我们可以使用is关键字来判断是否可以使用继承

  • 重写方法
    在继承关系下,子类覆盖父类的方法;

    • 方法名相同,
    • 参数相同
    • 返回值类型兼容,父类的类型一定要能包容子类的类型
  • 关于继承

    • 父类有的,子类一定有;
    • 父类没有的,子类可以增加;
    • 父类有的,子类可以修改重写
  • super关键字
    super关键字代表父类的对象引用,在子类中,通过super可以访问父类对象的属性和方法;
    在上面创建Cat这个类的时候,我使用了一个只有name参数的构造方法,而父类animals中我没有写只有name的构造方法,所以报错了,我才发现继承中构造方法有几个需要特别注意的地方

  • 关于继承中构造方法的说明

    • 在继承关系中,构造方法是不能被继承的;
    • 在子类调用构造方法时,首先会调用父类的构造方法;
    • 如果在子类中调用构造方法时没有指定父类的构造方法,会默认使用父类的无参构造方法
    • 可以使用supper(参数)来指定调用父类的构造方法,super()语句必须放在第一行来执行
  • 方法重载与方法重写的区别

    • 方法重载是在一个类中,方法名相同,方法参数不同的一些方法;
    • 方法重写是在继承关系下,,子类覆盖父类的方法,要求名字相同,参数相同,返回值类型小于父类的返回值类型,可以兼容返回值类型;
发布了19 篇原创文章 · 获赞 13 · 访问量 499

猜你喜欢

转载自blog.csdn.net/qq_45309297/article/details/105067287
今日推荐