当前位置: 首页 > news >正文

02 面向对象( 继承,抽象类)

强调:一定用自己的话总结,避免抄文档,否则视为作业未完成。

this关键字的作用

为了解决成员变量和局部变量所存在的二义性,适用于有参构造时使用

示例

private String name;private int age;public person(){}public person(String name,int age){this.name =name;//不使用this关键字的话,他的值就是默认值this.age =age;}

为成员变量设置值, 构造器和setter方法的选择,为什么?

构造器:在知道具体的参数的时候可以使用,可以创建对象并做初始化,只能使用一次

setter方法:在不知道有具体参数的时候使用,在创建对象后再使用getter方法进行调用,可以多次使用

示例:

public class person {private String name;private int age;public person(){}//无参构造器,添加有参构造器时必须写public person(String name,int age){//有参构造器this.name =name;this.age =age;}//getter和setter方法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 void p(){System.out.println("名字:"+name+",年龄:"+age);}

为什么需要继承?

解决多个类中存在有相同的字段和方法的重复问题

Java中的继承语法

继承时候使用extends关键字

public class 父类名{//父类,可以编写多个不同类中相同的字段名// 存放多个子类共同的字段和方法
}public class 子类名 extends 父类名{// 存放自己特有的(独有的)字段和方法
}

子类能从父类中继承到哪些成员?

1.public修饰的成员都可以被子类继承
2.private 修饰的成员子类不能继承

3.protected修饰的成员所有的子类都可以继承,专门提供给子类使用

4.默认的关键字只能是在同包下面可以被子类继承

5.有参构造器和无参构造器不能被继承

注意:java只支持单继承,也支持多重继承,不支持多继承

继承有一个根类:Objiect

子类什么时候需要覆盖父类中的方法,方法重写?(override)

在子类中添加一个 和父类一模一样的方法

//执行顺序:
//1. 先找自己是否有对应的方法,没有就找父类的
//2.找父类中是否存在该方法,如果有就执行,否则继续找
//3.知道找到objiect类,如果也没有就报错

方法覆盖的规则

private修饰的方法不能被子类所继承

  1. 实例方法签名必须相同 (方法签名= 方法名 + 方法的参数列表)
  2. 子类方法的返回值类型是和父类方法的返回类型相同或者是其子类
  3. 子类方法的访问权限比父类方法访问权限更大或相等
    • 如果父类方法是private,子类方法不能重写。==> 重写建立在继承的基础上,没有继承,就不能重写。

super关键字的作用

在子类中的父类方法被覆盖了,但任然需要父类中方法的东西就需要使用super关键字

示例

public class Ostrich extends Bird {public void fly() {System.out.println("自由奔跑");}//在子类中,如何调用父类中的方法public void doWork(){fly();//调用自己的fly方法//直接调用父类中的方法//super指向父类对象,只能找到直接父类super.fly();}

什么时候需要把父类中的方法定义成抽象方法?

子类必须要覆盖父类中的某一个方法的时候

使用abstract修饰的方法,称为抽象方法。 0

public abstract 返回类型 方法名(参数);

抽象方法的特点:

  • 使用abstract修饰,没有方法体,留给子类去覆盖

  • 抽象方法必须定义在抽象类或接口中

使用abstract修饰的类,成为抽象类。/

public abstract class 类名{}

抽象类应该怎么使用?可以直接使用抽象类创建对象吗?

1.抽象类不可以创建对象,语法不支持

2.抽象类中可以同时拥有抽象方法和普通方法

3.抽象类必须要有子类,并且子类必须覆盖父类的抽象方法,否则该抽象类没有意义,或者子类也是抽象类(可以不覆盖)

抽象类的意义是什么?

必须要有子类来进行继承,子类必须覆盖父类的抽象方法,除非子类也是一个抽象类就不用覆盖

Objiect中的equals和toString关键字

1.equals:

示例:

public class Student {private String name;private int age;public Student(String name, int age) {this.name = name;this.age = age;}//重写父类中的equals@Overridepublic boolean equals(Object o) {if (this == o) return true;//地址相同就是同一个对象//o为null或者两个对象的类型不同,则不是同一个对象if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;//若果年龄相同并且姓名的值相同则表示同一个对象return age == student.age && Objects.equals(name, student.name);}//省略setter方法
public static void main(String[] args) {Student s1=new Student("国辉",23);Student s2=new Student("国辉",23);//==,基本数据类型比较值,引用类型比较值System.out.println(s1 == s2);//false//objiect类中的eqauls方法比较两个对象的地址,作用和"=="相同//在Student类中重写equals方法之后,此时比较两个对象的值是否相同System.out.println(s1.equals(s2));//true}
2.toString

示例:

public class Student {private String name;private int age;public Student(String name, int age) {this.name = name;this.age = age;}//重写toString@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}//省略setter方法
 public static void main(String[] args) {Student s1=new Student("国辉",23);//cn.wolfcode._07_objiect.Student:全限定名//@157f12c:地址//objiect类中的toString://重写objiect的toString方法,打印对象的字段值System.out.println(s1.toString());//不具有打印功能,只做字符串转换System.out.println(s1);}

相关文章:

02 面向对象( 继承,抽象类)

强调:一定用自己的话总结,避免抄文档,否则视为作业未完成。 this关键字的作用 为了解决成员变量和局部变量所存在的二义性,适用于有参构造时使用 示例 private String name;private int age;public person(){}public person(String name,i…...

[C++]22种设计模式的C++实现大纲

前言 最近看遍全网,准备整理一套较好上手的设计模式文章,以便后续复习到处翻找,在此记录一下,如有侵权可以联系删除, 每天更新一篇,直到更新完 前置知识 UML类图与面向对象编程C UML类图详解软件设计原则与SOLID原则…...

用Powerpoint (PPT)制作并导出矢量图、高分辨率图

论文写作时经常需要导入矢量图,正规军都是用AI或者Inkscape作图,但是PPT更加适合小白用户,或者一些简单的构图需求使用PPT更加便捷,而且不得不承认PPT的某些功能是真的香,例如:简单的对齐、文字插入和格式修…...

小白量化《穿云箭集群量化》(9)用指标公式实现miniQMT全自动交易

小白量化《穿云箭集群量化》(9)用指标公式实现miniQMT全自动交易 在穿云箭量化平台中,支持3中公式源码运行模式,还支持在Python策略中使用仿指标公式源码运行,编写策略。 我们先看如何使用指标公式源码。 #编程_直接使…...

java Class类详解

Class类简介 在 java 世界里,一切皆对象。从某种意义上来说,java 有两种对象:实例对象和 Class 对象。每个类的运行时的类型信息就是用 Class 对象表示的,它包含了与类有关的信息,实例对象就是通过 Class 对象来创建的…...

DMGI:Unsupervised Attributed Multiplex Network Embedding

[1911.06750] Unsupervised Attributed Multiplex Network Embedding (arxiv.org) 目录 Abstract 1 Introduction 2 DGI 3 Deep Multiplex Graph Infomax: DMGI 特定关系类型的节点嵌入 Joint Modeling and Consensus Regularization Extension to Semi-Supervised Lea…...

C++基本介绍

文章目录 🥭1.C基本介绍🧂1.1 C是什么🧂1.2 C发展史 🍒2. C的优势🥔2.1 语言的使用广泛度🥔2.2 C的应用领域 🫒3. C学习计划 🥭1.C基本介绍 🧂1.1 C是什么 C是一种通用…...

如何理解工业互联网与智能制造,怎么共建智慧工厂?

第六届数字中国建设峰会26日在福州开幕,在这个数字化新技术的变革风口,企业如何把握机遇,借工业互联网和智能制造实现智慧工厂建设? 探讨三个问题: 什么是工业互联网、智能制造、智慧工厂;它们三者之间的…...

主机访问不到虚拟机(centos7)web服务的解决办法

目录 一、背景 二、解决办法 2.1、配置虚拟机防火墙 2.2、修改虚拟机网络编辑器 一、背景 主机可以访问外网,虚拟机使用命令:curl http://网址,可以访问到web服务 ,主机使用http://网址,访问不到虚拟机&#xff08…...

第四章 ActiveMQ与SpringBoot集成——ActiveMQ笔记(动力节点)

第四章 ActiveMQ 与 SpringBoot 集成 4-1 ActiveMQ 与 SpringBoot 集成集成配置 1、加载 spring boot 的 activeMQ 的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </de…...

Halcon 算子 select_shape_std 和 select_shape_xld区别

文章目录 1 select_shape_std 算子介绍2 select_shape_xld算子介绍3 select_shape_std 和 select_shape_xld区别4 Halcon 算子的特征 Features 列表介绍1 select_shape_std 算子介绍 select_shape_std (Operator) Name select_shape_std — Select regions of a given shape.Si…...

【Java基础】匿名内部类

&#x1f38a;专栏【Java基础】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【The truth that you leave】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 目录 &#x1f381;什么是匿名内部类 &#x…...

基于Freertos的ESP-IDF开发——6.使用DHT1温湿度传感器

基于Freertos的ESP-IDF开发——6.使用DHT1温湿度传感器 0. 前言1. DHT11驱动原理2. 完整代码3. 演示效果4. 其他FreeRtos文章 0. 前言 开发环境&#xff1a;ESP-IDF 4.3 操作系统&#xff1a;Windows10 专业版 开发板&#xff1a;自制的ESP32-WROOM-32E 准备一个DHT11温湿度传…...

C++——模板初阶

文章目录 一.泛型编程二.函数模板1.函数模板的概念2.函数模板的格式3.函数模板的原理4.函数模板的实例化&#xff08;1&#xff09;隐式实例化&#xff08;2&#xff09;显式实例化 5.模板参数的匹配原 三.类模板1.类模板的定义格式2.类模板的实例化 前言&#xff1a; 本章我们…...

【TOOLS: Linux与windows及linux与linux之间文件传输常用方法及命令】

文章目录 1.1.1 Windows和VirtualBox(Ubuntu)之间文件穿传输方法1.1.2 SCP 文件传输方法1.1.3 FTP 文件传输方法 1.1.1 Windows和VirtualBox(Ubuntu)之间文件穿传输方法 1&#xff09;设置 virtualbox 中的共享文件夹&#xff0c;用户可以在windows某个盘下创建自己的共享文件…...

【博览群书】《实战大数据》——属于我的第一本大数据图书

文章目录 前言简介目录其他 前言 Hello家人们&#xff0c;博主前不久参加了CSDN图书馆和机械工业出版社联合举办的图书类活动&#xff0c;很荣幸在活动中获得了属于自己的第一本大数据图书&#xff0c;《实战大数据—— 分布式大数据分析处理系统开发与应用》。作为大数据专业…...

【计算机组成原理】实验二

文章目录 实验二 运算器实验一、实验目的二、实验原理三、运算器功能编码四、实验内容任务一 算术运算任务二 逻辑运算任务三 移位运算 实验二 运算器实验 一、实验目的 完成算术、逻辑、移位运算实验&#xff0c;熟悉ALU运算类型的控制位运用。实验仪器&#xff1a;JTHS-A …...

hive数据库hql基础操作02

1.内部表和外部表 默认情况下创建的表就是内部表&#xff0c;Hive拥有该表的结构和文件。换句话说&#xff0c;Hive完全管理表&#xff08;元数据和数据&#xff09;的生命周期&#xff0c;类似于RDBMS中的表。当你删除内部表时&#xff0c;它会删除数据以及表的元数据。可以使…...

门电路OD门

漏极开路输出的门电路&#xff08;OD门&#xff09; 为了满足输出电平的变换&#xff0c;输出大负载电流&#xff0c;以及实现“线与”功能&#xff0c;将CMOS门电路的输出级做成漏极开路的形式&#xff0c;称为漏极开路输出的门电路&#xff0c;简称OD&#xff08;Open&#x…...

没有域名,一个服务器Nginx怎么部署多个前端项目

因为没有域名&#xff0c;所以用路径来作区分&#xff0c; 主项目&#xff1a;直接根路由访问该项目&#xff0c;与正常配置无任何差别从项目&#xff1a;此处设置/new路径&#xff0c;为从项目&#xff0c;所有从项目访问路径均要加上/new ①修改Nginx配置文件 Nginx 配置文…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...