Java学习笔记--继承的介绍,基本使用,成员变量和成员方法访问特点

目录

一,继承

1.什么是继承

2.怎么去继承:

3.注意:

4.继承怎么学   

 二,继承基本使用

三,成员变量和成员方法访问特点

1.成员变量访问特点

1,子类和父类中的成员变量不重名:

总结:

2,子类和父类中的成员变量重名

总结:

三,成员方法访问特点

1,子类和父类中的成员变量不重名:

2,子类和父类中的成员变量重名

总结


一,继承

1.什么是继承

父类怎么形成的:

我们的定义了多个类,发现这些类中有很多重复性的代码,我们就定义了一个父类,将相同的代码抽取出来放到父类中,其他的类直接继承这个父类,就可以直接使用父类中的内容了

2.怎么去继承:

extends

格式:
   子类 extends 父类

3.注意:

a.子类可以继承父类中私有和非私有成员,但是不能使用父类中私有成员

private私有的成员还是不能使用,但可以继承
 b.构造方法不能继承

方法和类是绑定在一起的

4.继承怎么学
   

a.继承不要从是否"拥有"方面来学习
      要从是否能"使用"方面来学习

只要关注能否使用,只要继承,就能使用非私有成员,目的就是为了减少代码重复,优化代码,是一种重要的面向对象设计思想(不用绕圈想了)

 二,继承基本使用

我们需要三个类来演示
1.定义一个父类,在其中定义重复性的代码
2.定义一个子类继承父类 -> extends
  子类 extends 父类
3.创建子类对象,直接使用父类中非私有成员  

 以Employee-->Manager-->Teacher为例,Employee为父类

public class Employee {
    String name;
    int age;


    public void work(){
        System.out.println("工作");
    }

    private void eat(){
        System.out.println("吃饭");
    }
}
public class Manager extends Employee{

}
public class Teacher extends Employee{

}

创建测试类,new子类,使用父类成员,我们发现只能使用父类非私有成员

public class test {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        teacher.name = "张三";
        teacher.age = 23;
        System.out.println(teacher.name+".............."+teacher.age);
        teacher.work();
        //teacher.eat();子类继承父类之后不能使用父类私有成员,只能使用父类非私有成员


        System.out.println("===================");

        Manager manager = new Manager();
        manager.name = "李四";
        manager.age = 34;
        System.out.println(manager.name+".............."+manager.age);
        manager.work();
        //manager.eat();子类继承父类之后不能使用父类私有成员,只能使用父类非私有成员
    }
}

三,成员变量和成员方法访问特点

1.成员变量访问特点

1,子类和父类中的成员变量不重名:

创建三个类,Fu类,Zi类,test类

public class Fu {
    int numFu = 100;
}
public class Zi extends Fu{
    int numZi = 10;
}
public class test {
    public static void main(String[] args) {
        //创建父类对象
        Fu fu = new Fu();
        System.out.println(fu.numFu);//父类中的numFu
        //System.out.println(fu.numZi);//不能直接调用子类特有成员

        System.out.println("======================");
        //创建子类对象

        Zi zi = new Zi();
        System.out.println(zi.numZi);//子类中的numZi
        System.out.println(zi.numFu);//继承了父类,可以使用父类非私有成员
        
    }


}

运行结果如下

总结:

看等号左边是谁,先调用谁中的成员  
如果等号左边是父类类型,只能调用父类中的成员变量。

如果等号左边是子类类型,既能调用子类的,还能调用父类中继承过来的非私有成员。
 

2,子类和父类中的成员变量重名

public class Fu {
    int numFu = 100;

    int num = 10000;
}
public class Zi extends Fu{
    int numZi = 10;

    int num = 1000;
}
public class test {
    public static void main(String[] args) {
        //创建父类对象
        Fu fu = new Fu();
        System.out.println(fu.numFu);//父类中的numFu
        //System.out.println(fu.numZi);//不能直接调用子类特有成员
        System.out.println(fu.num);//父类的

        System.out.println("======================");
        //创建子类对象

        Zi zi = new Zi();
        System.out.println(zi.numZi);//子类中的numZi
        System.out.println(zi.numFu);//继承了父类,可以使用父类非私有成员
        System.out.println(zi.num);//子类的
    }


}

如果把子类里面的num=1000注释掉,输出的zi.num会是什么值呢

会发现zi.num会直接继承Fu类里面的num=10000

那如果左边右边不一样呢

输出的结果会是Zi类里面的1000吗

不是,依然是父类里面的10000,所以只有看左边才能确定调用的是谁中的成员

总结:

继承前提下,成员变量访问特点口诀:
看等号左边是谁,先调用谁中的成员,子类没有,找父类

三,成员方法访问特点

1,子类和父类中的成员变量不重名:

依然创建三个类

public class Fu {
    public void methodFu(){
        System.out.println("我是父类中的methodFu");
    }
}
public class Zi extends Fu{
    public void methodZi(){
        System.out.println("我是父类中的methodZi");
    }
}

测试类

public class test {
    public static void main(String[] args) {
        Fu fu = new Fu();
        fu.methodFu();
        //fu.methodZi();  不能调用子类特有方法

        System.out.println("==================");
        Zi zi = new Zi();
        zi.methodZi();
        zi.methodFu();//继承父类,可以调用父类中非私有方法


    }
}

运行

2,子类和父类中的成员变量重名

给Fu类和Zi类各加一个method方法

public class Fu {
    public void methodFu(){
        System.out.println("我是父类中的methodFu");
    }
    
    
    public void method(){
        System.out.println("我是父类中的method方法");
    }
}
public class Zi extends Fu{
    public void methodZi(){
        System.out.println("我是子类中的methodZi");
    }


    public void method(){
        System.out.println("我是子类中的method方法");
    }
}

测试类

public class test {
    public static void main(String[] args) {
        Fu fu = new Fu();
        fu.methodFu();
        //fu.methodZi();  不能调用子类特有方法
        fu.method();//父类中的method方法

        System.out.println("==================");
        Zi zi = new Zi();
        zi.methodZi();
        zi.methodFu();//继承父类
        zi.method();//子类中的method方法


    }
}

同样,如果子类里面没有method方法,就会继承父类里面的方法

总结

成员方法:看new的是谁,先调用谁中的方法,子类没有,找父类

继承中,成员变量访问特点:看等号左边是谁,先调用谁中的成员变量
​继承中,成员方法访问特点:看new的是谁,先调用谁中的方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/923708.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初级数据结构——二叉树题库(c++)

这里写目录标题 前言[1.——965. 单值二叉树](https://leetcode.cn/problems/univalued-binary-tree/)[2.——222. 完全二叉树的节点个数](https://leetcode.cn/problems/count-complete-tree-nodes/)[3.——144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-…

redmi 12c 刷机

刷机历程 一个多月前网购了redmi 12c这款手机, 价格只有550,用来搞机再适合不过了, 拆快递后就开始倒腾,网上有人说需要等7天才能解锁,我绑定了账号过了几天又忍不住倒腾,最后发现这块手机不用等7天解锁成功了,开始我为了获取root权限, 刷入了很火的magisk,但是某一天仍然发现/…

Python 爬虫入门教程:从零构建你的第一个网络爬虫

网络爬虫是一种自动化程序,用于从网站抓取数据。Python 凭借其丰富的库和简单的语法,是构建网络爬虫的理想语言。本文将带你从零开始学习 Python 爬虫的基本知识,并实现一个简单的爬虫项目。 1. 什么是网络爬虫? 网络爬虫&#x…

计算机毕业设计Hadoop+Spark音乐推荐系统 音乐预测系统 音乐可视化大屏 音乐爬虫 HDFS hive数据仓库 机器学习 深度学习 大数据毕业设计

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

JAVA题目笔记(二十)Stream流综合练习+方法引用

一、数据过滤 import java.util.*; import java.util.stream.Collectors;public class Co {public static void main(String[] args) {List<Integer> listnew ArrayList<>();Collections.addAll(list,1,2,3,4,5,6,7,8,9,10);List<Integer> newlist list.str…

Python学习34天

import random class Game: peo0 rob0 # # def __init__(self,peo,rob): # self.peopeo # self.robrob def Play(self): """ 石头剪刀布游戏&#xff0c;0代表石头&#xff0c;1代见到&#xff0c;2代表石头 …

MATLAB支持的距离度量

距离度量是用于量化两个点或样本之间差异的一种方法。在不同的领域和应用场景中&#xff0c;距离度量的选择可能会有所不同。 欧几里得距离&#xff08;Euclidean Distance&#xff09;&#xff1a;这是最直观的距离定义&#xff0c;适用于n维空间中的两点。对于二维空间中的点…

Jmeter中的测试片段和非测试原件

1&#xff09;测试片段 1--测试片段 功能特点 重用性&#xff1a;将常用的测试元素组合成一个测试片段&#xff0c;便于在多个线程组中重用。模块化&#xff1a;提高测试计划的模块化程度&#xff0c;使测试计划更易于管理和维护。灵活性&#xff1a;可以通过模块控制器灵活地…

【1.2 Getting Started--->Installation Guide】

NVIDIA TensorRT DOCS 此 NVIDIA TensorRT 10.6.0 安装指南提供安装要求、TensorRT 包中包含的内容列表以及安装 TensorRT 的分步说明。 安装指南 摘要&#xff1a; 本 NVIDIA TensorRT 10.3.0 安装指南提供了安装要求、TensorRT 软件包中包含的内容列表以及安装 TensorRT 的…

ubuntu设置程序开机自启动

文章目录 1、概述2、图形界面设置3、设置为Systemd服务 1、概述 测试环境&#xff1a;ubuntu22.04 带图形界面 实现方式1&#xff1a;通过图形界面的【启动应用程序】设置开机自启动&#xff1b; 实现方式2&#xff1a;通过配置为服务实现开机自启动。 2、图形界面设置 优点&am…

IDEA2024创建一个spingboot项目

以下是创建一个基本的 Spring Boot 项目的步骤和示例&#xff1a; 初始化一个springboot工程其实有许多方法&#xff0c;笔者这里挑了一个最快捷的方式搭建一个项目。我们直接通过官方平台&#xff08;start.spring.io&#xff09;进行配置&#xff0c;然后下载压缩包就可以获取…

商用密码应用安全性评估,密评整体方案,密评管理测评要求和指南,运维文档,软件项目安全设计相关文档合集(Word原件)

一、 密码应用安全性评估方案 &#xff08;一&#xff09; 密码应用测评工作思路 1.1.1. 测评准备活动的主要任务 1.1.2. 测评准备活动的输出文档 1.2. 方案编制活动 1.2.1. 方案编制活动的主要任务 1.2.2. 方案编制活动的输出文档 1.3. 现场预评估活动 1.3.1. 现场测评…

音视频技术扫盲之预测编码的基本原理探究

预测编码是一种数据压缩技术&#xff0c;广泛应用于图像、视频和音频编码等领域。其基本原理是利用数据的相关性&#xff0c;通过对当前数据的预测和实际值与预测值之间的差值进行编码&#xff0c;从而实现数据压缩的目的。 一、预测编码的基本概念 预测编码主要包括预测器和…

标定系列——关于cv::calibrateHandEye的介绍

关于cv::calibrateHandEye的介绍 介绍函数原型所在头文件原理说明 介绍 函数原型 void cv::calibrateHandEye ( InputArrayOfArrays R_gripper2base, InputArrayOfArrays t_gripper2base, InputArrayOfArrays R_target2cam, InputArrayOfArrays t_target2cam, OutputArra…

uname -m(machine) 命令用于显示当前系统的机器硬件架构(Unix Name)

文章目录 关于 arm64 架构检查是否安装了 Rosetta 2其他相关信息解释&#xff1a;命令功能&#xff1a;示例&#xff1a; dgqdgqdeMac-mini / % uname -m arm64您运行的 uname -m 命令显示您的系统架构是 arm64。这意味着您的 Mac Mini 使用的是 Apple 的 M1 或更新的芯片&…

代码随想录算法训练营day46|动态规划09

买卖股票的最佳时机四 之前是最多只能完成两笔交易&#xff0c;现在是至多可以买卖k次&#xff0c;那么状态数需要定为2*k1种&#xff0c;此时&#xff0c;就要分析多种情况的递推式 找到奇偶数交替的规则即可 class Solution { public:int maxProfit(int k, vector<int&g…

qt QDateTime详解

1. 概述 QDateTime 是 Qt 框架中用于处理日期和时间的类。它将 QDate 和 QTime 组合在一起&#xff0c;提供了日期时间的统一处理方案。QDateTime 可以精确到毫秒&#xff0c;并支持时区处理。 2. 重要方法 构造函数: QDateTime() 构造无效的日期时间 QDateTime(const QDa…

[Docker-显示所有容器IP] 显示docker-compose.yml中所有容器IP的方法

本文由Markdown语法编辑器编辑完成。 1. 需求背景: 最近在启动一个服务时&#xff0c;突然发现它的一个接口&#xff0c;被另一个服务ip频繁的请求。 按理说&#xff0c;之前设置的是&#xff0c;每隔1分钟请求一次接口。但从日志来看&#xff0c;则是1秒钟请求一次&#xff…

imx-6ULL uboot 移植

写在前面&#xff1a; 本文章旨在总结备份、方便以后查询&#xff0c;由于是个人总结&#xff0c;如有不对&#xff0c;欢迎指正&#xff1b;另外&#xff0c;内容大部分来自网络、书籍、和各类手册&#xff0c;如若侵权请告知&#xff0c;马上删帖致歉。 目录 环境搭建交叉编…

Zookeeper选举算法与提案处理概览

共识算法(Consensus Algorithm) 共识算法即在分布式系统中节点达成共识的算法&#xff0c;提高系统在分布式环境下的容错性。 依据系统对故障组件的容错能力可分为&#xff1a; 崩溃容错协议(Crash Fault Tolerant, CFT) : 无恶意行为&#xff0c;如进程崩溃&#xff0c;只要…