java面向对象之继承

java面向对象之继承

继承是java语言的面向对象的三大特征(封装,继承,多态)之一,其表现为子类继承父类的属性或方法并且可以重新在子类中重新定义父类的属性或方法。
关键字:extends
格式:

public class Child extends Father {
           
}

接下来看一个简单案例:

//父类
public class Father {
    String house;
    String car;

    public Father() {
    }

    public Father(String house, String car) {
        this.house = house;
        this.car = car;
    }

    public String getHouse() {
        return house;
    }

    public void setHouse(String house) {
        this.house = house;
    }

    public String getCar() {
        return car;
    }

    public void setCar(String car) {
        this.car = car;
    }

    public void work(){
        System.out.println("编程");
    }

}

//子类
public class Son extends Father{
    @Override
    public void work() {
        System.out.println("技术专家");
    }

    public void show(){
        System.out.println(house + "," + car);
    }
}
//测试类
public class Test {
    public static void main(String[] args) {
        Father father = new Father();
        father.work();
        Son son = new Son();
        son.setCar("保时捷");
        son.setHouse("大别墅");
        son.show();
        son.work();
    }
}

//输出结果:
编程
大别墅,保时捷
技术专家

通过以上代码可以总结出,子类继承父类可从成员变量,成员方法和构造方法进行总结:

  1. 子类可以继承父类的非私有的成员变量
  2. 可以使用父类非私有的成员方法(在测试类里可以看到使用父类的get,set方法)
  3. 子类可以对父类的成员方法进行重写
  4. 构造方法不能被继承,子类所有的构造方法默认都会首先访问父类的无参构造方法。在子类所有的构造方法中的首行会默认存在一个super()方法用以访问父类的无参构造,如需访问父类的有参构造方法则需显示的使用super(param1, param2…),则会直接访问父类的有参构造方法。

继承的使用场景:
is…a的场景,也就是谁是谁的一种,比如猫是动物的一种。

使用继承的优势:

  1. 提高了代码的复用性
  2. 提高了代码的维护性
  3. 实现多态的基础
    缺点:降低了类的独立性,当父类改变时,子类必须改变。

继承的注意事项:

  1. 方法重写也叫方法覆盖,是子类重写父类的方法,用@Override注解。重写父类的方法,在定义方法时方法的格式必须与父类保持完全一致,包括方法名,返回只及参数列表都完全一致,子类可以重写方法体的内容,但声明时必须与父类保持完全一致,否则编译会报错。重写方法时注意私有方法不能被重写,且子类的重写方法的访问权限不能低于父类的方法访问权限。
  2. 子类访问成员变量的规则。先在子类的成员方法中找,然后在子类的成员变量里找,最后在父类的成员变量里找,找不到则编译报错。
  3. 类与类之间的继承是单继承,如需要,则需要多层继承,如子类继承父类,父类再继承grandFather类,这样子类就拥有了父类和grandFather的属性和方法。
  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值