Java继承

目录

引述

继承的概念与语法

super关键字


引述

Java当中创建的类通常有着很多属性,而大多数类一般都具有某些相同类型的属性,例如生活中的猫、狗,同属动物,它们有着许多相同的行为,比如说都有名字,都会吃饭,睡觉。

要描述清楚猫(A)和狗(B),可以有两种叙述方法:

1.A是动物,然后A是猫;B是动物,然后B是狗。

2.A和B都是动物,A是猫,B是狗。

对比之下可以发现第一种叙述方法很明显是多余的,因为A和B都是动物,完全没有必要分开来说,可以一次性说完。

第二种叙述方法在面向对象思想中的体现便是继承。继承主要解决的问题是:共性的抽取,实现代码复用。

继承的概念与语法

继承指的是,在保持原有类特性的基础上进行扩展,增加新功能。

而这个原有类,称为父类(基类),增加新功能后的类称为子类(派生类)。

Java中表示类与类之间的继承关系,通过关键字extends实现:

public class Animal {
    String name;//名字
    int age;//年龄
    void eat() {
        System.out.println(name + "is eating");
    }
}

狗类: 

public class Dog extends Animal {
    void bark () {
        System.out.println(name + "is barking");
    }
}

猫类:

public class Cat extends Animal{
    void meow() {
        System.out.println(name + "is meowing");
    }
}

 应用:

public class Test {
    public static void main(String[] args) {
        Dog dog = new Dog();
        Cat cat = new Cat();
        dog.name = "xixi ";
        dog.bark();
        cat.name = "haha ";
        cat.meow();
        //输出:
        //xixi is barking
        //haha is meowing
    }
}

注意:

子类中必须创建新的成员变量或成员方法,否则就没必要继承了。

子类中创建的成员变量或成员方法名称注意和父类相区别,如果不慎子类父类有同名变量,则优先访问子类的。

通过子类进行访问,如果子类中有,则访问子类的,否则访问父类(如果父类有,没有则报错)。

在某些情况下,父类和子类的某些变量名相同是不可避免的,为了避免访问冲突,需要用到super关键字。通过super.变量名访问父类中的成员变量或成员方法。注意super只能在非静态方法中使用。

super关键字

super除了可以用来访问父类成员以外,在子类对象的初始化方面,同样有着大用途。

普通类实现初始化,需要用到this关键字。例如这样一个Person类:

 而对于继承父类的子类对象的初始化,比如继承Person类的Student类,除了父类中这样写以外,子类中同样需要构造,只不过这里this需要改成super:

 子类对象构造时,需要先调用父类构造方法,然后执行子类的构造方法。

super的用法几乎和this一样,都只能访问非静态变量或方法,都要放在构造方法的第一行,且二者不能同时存在于同一构造方法中。区别在于this作用于本类,而super作用于父类。

IDEA中可以实现快速构造:

 

与继承设计初衷类似的还有组合, 也是为了提高代码的复用性。如果说继承是:子类 is a 父类,那么组合就是 组合对象 has a 子类。组合仅仅是将对象看作一个成员变量处理。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值