Java基础——继承、方法重写和访问修饰符

一、引言

继承是面向对象编程中的一项重要特性,也是Java语言中的核心概念之一。

通过继承,我们可以构建出具有层次结构的类,并实现代码的重用和扩展。继承不仅提供了一种组织和管理代码的方式,还能够使程序更加灵活和可扩展。

二、继承

(1)概念

将子类之间的共性进行抽取生成父类, 在继承关系下, 子类能够直接拥有父类可被继承的内容

继承的作用之一就是解决子类之间的代码冗余问题

(2)语法

基本格式

public class 子类类名 extends 父类类名{
    
}

案例

package com.by.entity;

/**
 动物类-父类
 */
public class Animal {
    //名字  年龄  性别
    public String name;
    public int age;
    public boolean sex;

    //吃饭
    public void eat(){
        System.out.println("吃饭");
    }
    //睡觉
    public void sleep(){
        System.out.println("睡觉");
    }
}
//Dog类,继承自Animal类
public class Dog extends Animal{

}
//Cat类,继承自Animal类
public class Cat extends Animal{

}
//测试类
package com.by.test;

import com.by.entity.Cat;
import com.by.entity.Dog;

public class Test {
    public static void main(String[] args) {
        Dog d = new Dog();
        d.name = "小黑";
        d.eat();
        d.sleep();
        Cat c = new Cat();
        c.eat();
        c.sleep();

    }
}

(3)规则

  1. 继承双方必须满足is a的关系结构
  2. 一个子类只能有一个直接父类,一个父类可以拥有多个直接子类**(多继承)**
  3. 一个子类在身为子类的同时也可以是其他类的父类
  4. 子类可以拥有独有内容
  5. 子类可以继承拥有所有父类所有可被继承的内容
  6. 父类无法使用和访问子类的独有内容
  7. 父类的私有内容子类无法直接使用
  8. 父类的构造子类

(4)子类内存结构

在这里插入图片描述

  • 子类内存由父类内容和子类独有独有内容组成

(5)父类封装

package com.by.entity;

/**
 动物类-父类
 */
public class Animal {
    //名字  年龄  性别
    private String name;
    private int age;
    private boolean sex;

    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 boolean isSex() {
        return sex;
    }

    public void setSex(boolean sex) {
        this.sex = sex;
    }

    //吃饭
    public void eat(){
        System.out.println("吃饭");
    }
    //睡觉
    public void sleep(){
        System.out.println("睡觉");
    }

    private void method(){

    }
}
package com.by.test;

import com.by.entity.Dog;

public class Test {
    public static void main(String[] args) {
        Dog d = new Dog();
        d.setName("小黑");
        System.out.println(d.getName());

    }

}

三、方法重写

  • 子类对从父类继承过来的方法进行方法体的重新书写,简称方法重写, 也称为方法覆盖

规则

  1. 建立在继承关系之上
  2. 方法名、参数列表、返回值类型必须与父类保持一致
  3. 访问修饰符与父类相同或更宽
  4. 不允许抛出比父类更大或更多的异常

使用

  1. 子类重写之后,优先执行子类重写内容
  2. 父类的作用:
    • 解决子类之间的冗余问题
    • 强制约束子类必须拥有某些内容

四、访问修饰符

本类同包非同包子类非同包非子类
private-私有的
default-默认的
protected-受保护的
public-公共的,公开的
  1. 只有default和public可以修饰类

  2. default无法显式声明

  3. 以上四个都可以修饰属性、方法、构造

  4. 以上四个都不能修饰局部变量

五、结语

继承是面向对象编程中的重要概念,它提供了一种代码复用和扩展的机制,使得程序更加灵活和可维护。

在使用继承时,我们需要注意一些问题。首先,继承应该遵循"is-a"关系,即子类应该是父类的一种特殊类型。其次,子类可以覆盖父类的方法,以实现自己的特定行为。此外,Java中的单继承限制了一个类只能继承一个父类,但可以通过接口实现多重继承的效果。

继承还需要注意的是合理设计类层次结构。过度的继承可能导致类之间的耦合性增加,代码的维护难度加大。因此,在使用继承时,我们应该遵循高内聚、低耦合的设计原则,合理划分类的责任和功能。

最后,继承不仅仅是一种代码组织的方式,它还是面向对象思想的体现。通过继承,我们可以构建出更加抽象、灵活和可扩展的程序。合理运用继承,可以提高代码的重用性和可维护性,同时也能够使程序的逻辑更加清晰和易于理解。

继承作为面向对象编程的重要特性之一,在实际开发中有着广泛的应用。通过合理运用继承,我们可以构建出更加优雅、灵活和可扩展的程序。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值