• Java中继承相关知识点


    继承

    1.继承概述

    继承是面向对象的三大特征之一。可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法

    1.1 继承的格式

    • 格式:public class 子类名 extends 父类名{}
    • 范例:public class Zi extends Fu{}
    • Fu:父类,也叫基类、超类
    • Zi:子类,也叫派生类

    1.2 继承中子类的特点

    • 子类可以有父类的内容
    • 子类还可以有自己特有的内容

    2.继承的好处和弊端

    好处:

    • 提高了代码的复用性(多个类相同的成员可以放到同一个类中)
    • 提高了代码的维护性(如果方法的代码需要修改,修改一处即可)

    弊端:

    继承让类和类之间产生了关系,类的耦合性增强了,当父类中发生变化时子类实现也不得不跟着发生变化,削弱了子类的独立性。


    什么时候使用继承?

    假设法:

    有两个类A和B,如果他们满足A是B得一种或者B是A的一种,就说明他们存在继承关系,这个时候就可以考虑用继承来实现,否则就不能乱用继承

    举例:

    水果和苹果,猫和动物,猫和狗

    3.继承中变量的访问特点

    在子类方法中访问一个变量:

    • 先在子类方法中的范围找
    • 在子类成员范围找
    • 在父类成员范围找
    • 如果都没有就报错,不考虑父类的父类

    4.super关键字

    super关键字和this关键字的用法相似

    • this:代表本类对象的引用
    • super:代表父类对象的引用(父类存储空间的标识)
    关键字 访问成员变量 访问构造方法 访问成员方法
    this this.成员变量:访问本类中的成员变量 this(...):访问本类的构造方法 this.成员方法(...):访问本类的成员方法
    super super.成员变量:访问父类的成员变量 super(...):访问父类的构造方法 super.成员方法:访问父类的成员方法

    示例:

    父类

    package com.itheima_04;
    
    public class Father {
        public int age = 40;
    }
    

    子类

    package com.itheima_04;
    
    public class Son extends Father {
        public int age = 30;
    
        public void show(){
            int age = 10;
            //访问方法中的age
            System.out.println(age);
            //访问子类中的age
            System.out.println(this.age);
            //访问父类中的age
            System.out.println(super.age);
        }
    }
    

    测试类

    package com.itheima_04;
    
    public class Test {
        public static void main(String[] args) {
            Son s = new Son();
            s.show();
        }
    }
    

    5.继承中构造方法的访问特点

    子类中所有的构造方法都默认会访问父类中无参的构造方法

    • 因为子类要继承父类中的数据,可能还会使用父类中的数据。所以子类初始化之前,一定要先完成对父类的初始化。
    • 每一个子类构造方法的第一条语句默认都是:super()

    6.方法重写

    方法重写概述

    • 子类中出现了和父类中一模一样的方法声明

    方法重写的应用

    • 当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,既沿袭了父类的功能又定义了子类特有的内容

    @Override

    • 是一个注解
    • 可以帮助我们检查重写方法的方法声明的正确性

    示例:

    Phone

    package itheima_05;
    //手机类
    public class Phone {
        public void call(String name){
            System.out.println("给" + name + "打电话!");
        }
    }
    

    NewPhone

    package itheima_05;
    //新式手机
    public class NewPhone extends Phone{
        @Override                   //注解,可以帮助检查方法声明的正确性
        public void call(String name){
            System.out.println("开启视频功能");
            super.call(name);
        }
    }
    

    PhoneDemo

    package itheima_05;
    //测试类
    
    public class PhoneDemo {
        public static void main(String[] args) {
            //创建对象
            Phone phone = new Phone();
            phone.call("蓝头发妹妹");
    
            System.out.println("============");
            NewPhone newPhone = new NewPhone();
            newPhone.call("蓝头发妹妹");
        }
    }
    

    7.重写的注意事项

    • 私有方法不能被重写(父类私有成员子类是不能继承的)
    • 子类方法访问权限不能比父类方法中的访问权限低

    8.继承的注意事项

    • Java中的类只支持单继承,不支持多继承
    • Java中类是支持多层继承的
  • 相关阅读:
    SAX解析xml,小实例
    Pull解析xml,小实例
    TCP通信小实例
    android 获取手机信息
    mysql创建用户与授权
    java执行SQL脚本文件
    IOUtils.readFully()的使用
    下载工具类
    vue element ui 父组件控制子组件dialog的显隐
    springboot-mybatis配置多数据源
  • 原文地址:https://www.cnblogs.com/icyhblog/p/14108401.html
Copyright © 2020-2023  润新知