子类怎么继承父类方法中的变量_JavaOOP_04 封装 继承

一、封装

概念:隐藏程序内部的具体实现细节,对外提供接口,从而提高程序的安全性。

高内聚,低耦合。

使用封装的步骤:

1、属性私有化,使用private访问修饰符进行修饰

2、对外提供 setter/getter 方法 setter设置值 getter获取值

3、在setter语句中进行逻辑语句进行判断

访问修饰符的使用

public 公共的

protected 受包保护的

默认修饰符 默认访问修饰符,不可显示定义

private 私有的只有本类可以访问

二、继承

2.1 Object类:

所有类的基类。(父类)

Java是单根继承,子类只有一个直接父类。但Java有传承性。子类可以有多个间接父类。

2.2 使用继承后,子类不能继承父类的那些成员:

private私有化的

构造方法(只能调用,不可继承)

不同包中的,默认访问修饰符修饰的成员。(protected、public修饰的可以)

//static 静态使用 
//被包保护的静态常量
//数据共享时	static	静态 	
//当数据不经常更改时	final	常量 	
//当数据既是共享的也不易于更改时	static final 静态常量 	
protected static  final String GIRL = "雌"; 	
protected static final String BOY = "雄";

2.3 继承的优缺点

优点: 提高代码的复用性

提高代码的维护性(一改即可改全部)

让类与类之间产生了关系,是多态的前提

缺点: 类的耦合性增强

开发的原则:高内聚低耦合

耦合:类与类的关系

内聚:自己处理某件事情的能力

关键字 extends

目的:减少代码量,方便后期维护修改。

符合继承的关系: is a

使用步骤: 将多个程序类中的共同的特征抽取出来,形成一个公共的类。这个公共的类叫父类,实现继承这个公共的父类的程序,叫做子类。

继承的语法:

访问修饰符	子类		extends		父类{   //成员变量   //成员方法    }

子类继承父类后构造的执行顺序:先父类后子类

当子类构造没有显示调用父类任意构造时,系统会隐式默认调用父类无参构造方法。

当子类构造显示调用了父类任意构造时,系统就不会隐式默认调用父类无参构造方法。

此时程序执行时,只会调用子类构造调用的对应父类构造方法,且该类调用的构造方法必须放在首行

2.4 代码示例

让类与类之间产生关系,子父类关系

例如 狗类猫类都属于动物类

Animal 是父类

Dog Cat 是子类

public 

2.5 继承的特点

只支持单继承(一个儿子继承一个父亲)

不支持多继承(有些语言支持多继承,格式:extends 类1,类2)

Java支持多层继承(继承体系,儿子继承父亲,父亲继承爷爷)

a56658b94bf375cfbb3491da9957e70b.png

如果想用这个体系的所有功能中

即DemoC多层继承了DemoB和DemoC 用最底层的类创建对象

如果想看这个体系的共性功能

即DemoB和DemoC 都从DemoA继承 看最顶层的类

2.6 继承的注意事项

f2ed38ae3c7e9632ea10436e4accb6ba.png

继承是 is a 的关系

学生 老师 是 人

苹果 西瓜 是 水果

狗 猫 是 动物

如果有A、B两个类 若A是B的一种,或B是A的一种就可以考虑使用继承。

2.7 继承中成员变量的关系

1cf1695e38f5165e6f9b2d2d3c3a93e0.png

子父类不同名变量,没有影响

子父类同名变量(开发中不允许出现这种情况,子类继承父类就是为了使用父类的成员,

自己再定义同名的成员变量就失去了继承的意义),

就近原则,即子类自己有就不用父类的

2.8 this与super的区别

35c3aac3155fac9b4422d63c9b0dbb7f.png

2.9 继承中构造方法的关系

d4a2295198390c69032451d96da9065f.png

构造方法:进行初始化

因为子类初始化之前要先完成父类的初始化

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

父类初始化完成后才轮到子类

a82aab18fd9951d88d96038a72bf207b.png

2.10 构造方法的注意事项

8fc4f1837d8f93a3b0f069c0e8eac6e9.png

9e4b8321bcba73e492b25d12316d74f7.png

this与super不能同时出现

当父类没有无参构造方法时

使用setXxx( ) getXxx( )方法

2.11 继承中成员方法的关系

a3295b6bdc61fb2bc46ef8dff11a6905.png

不同名的方法名

直接使用

同名的方法名

若想使用父类的方法 使用 super. 调用

方法重写

2.12 static关键字的使用

被static修饰的变量叫做静态变量或类变量

被static修饰的方法叫做静态方法或类方法

被static修饰的代码块叫做静态代码块

被static修饰的成员,直接通过 类名.成员(属性、方法);

static的使用场景:

数据共享时 static 静态

当数据不经常更改时 final 常量

当数据既是共享的也不易于更改时 static final 静态常量

静态修饰的成员和非静态修饰成员的区别:

1a2a490f55e4f97a4e7d6ec08c199b21.png

非静态(实例) 成员变量和成员方法 可以是静态也可以是非静态

注意: 实例方法和静态方法可以直接调用static 但不可定义static 因为static称为类变量

只能在类中定义

静态只能访问静态

静态方法不能【直接】调用非静态(实例)成员

2.13 类变量(静态变量)和实例变量(对象变量,成员变量)的区别?

(1)所属不同:类变量属于类,是对象的共性内容;实例变量属于对象,是对象的特性内容。

(2)在内存中位置不同:类变量存在方法区的静态区,拷贝只有一份;实例变量存在堆内存中,拷贝可以有一份或者多份。

(3)生命周期不同:类变量随着类的加载而存在,随着类的消失而消失;实例变量随着对象的存在而存在,随着对象的消失而消失。

(4)调用方式不同:类变量既能被类名点的形式调用,也能通过对象点的形式调用;而实例变量只能通过对象点的形式调用。通过实例化对象名. 实例化变量 操作。

2.14 abstract

abstract修饰的类为抽象类 不能被实例化

抽象类中可以定义0~多个抽象方法

继承抽象类的子类,该子类必须重写父类中的所有抽象方法,除非该子类也是一个抽象类。

抽象方法必须存在于在抽象类中

abstract修饰的方法为抽象方法 没有方法体

抽象类的使用场景:

父类没有必要实现方法的具体细节

父类强制要求子类必须实现的功能方法

2.15 方法重写

可理解为子类重写父类方法

前提:存在继承关系

概念:不同类中,方法名相同。参数列表相同。

子类的访问修饰符不能严于父类

子类的方法返回值类型和父类的返回值类型相同,或者是其子类。

简写:不同类,同名,同参,与方法返回值类型和返回修饰符有关。

子类重写父类的常见方法:

toString();

equals();

2.16 方法重载

简写:同类,同名,不同参,与方法返回值类型和返回修饰符无关。

2.17 代码块的执行顺序

静态代码块只执行一次

构造代码块优先于构造方法

先有父类再有子类 即使用子类构造方法前要先进行父类构造方法

b02ff5c102ef282e939e41df371cff89.png

public class Text01 { public static void main(String[] args) { Zi z = new Zi(); } } class Fu { static { System.out.println("Fu静态代码块"); }

{ System.out.println("Fu构造代码块"); } public Fu() { System.out.println("Fu构造方法"); }

}

class Zi extends Fu { static { System.out.println("Fu静态代码块"); }

{ System.out.println("Zi构造代码块"); } public Zi() { System.out.println("Zi构造方法"); } }

4a7de28821e9fcdfbb6af3ddd7b1458b.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 社区版密码如何修改_如何用优雅的方法修改MySQL root密码

搭噶好,我系小编,我好久没发文章了啊,今天发文章的原因是,我竟然忘了我的MySQL root密码。。本来想找RAKsmart客服直接重置啥的,后来想想还是自己搞吧,还能长知识。然后,我发现一个事情&#xf…

中countif函数_Count系列函数-Count、Counta、Countblank、Countif、Countifs

统计函数在我们的日常工作中也会经常使用。常见的有Count、Counta、Countblank、Countif、Countifs五个。Count用于统计数据类型的单元格个数,Counta用于统计非空单元格的个数,Countblank用于统计空单元格的个数,而Countif、Countifs用于条件…

labview实例_手把手以实例教你学LabVIEW编程,条件结构编程方法

LabVIEW又称为G语言,简单易学、形象直观,采用图形化的编程方式,是专为测试、测量和控制应用而设计的系统工程软件。在上篇文章(请参考:顺序结构编程)中已经讲了顺序结构的编程方法,下面通过具体例子演示条件结构的编程…

用递归与分治策略求解网球循环赛日程表_算法设计:分治法(比赛日程安排)...

一、算法思路1、思路分治算法的思想是:对于一个规模位N的问题,若该问题可以容易解决(比如规模N较小),则直接解决,否则将其分解为M个规模较小的子问题,这些子问题互相独立,并且与原问题形式相同,…

聚类算法 距离矩阵_谱聚类

比起传统的K-means算法,谱聚类对数据分布的适应性更强,计算量也要小很多。1. 谱聚类概述谱聚类是从图论中演化出来,主要思想是吧所有的数据看作空间中的点,这些点之间可以用边连接起来。距离较远的两个点之间的边权重值较低&#…

vlan划分不能上网_VLAN工作原理

什么是VLANVLAN(Virtual LAN),翻译成中文是“虚拟局域网”。可以看做是在一个物理局域网络上搭建出几个逻辑上分离的几个局域网。举个例子来说,如果一个交换机划分为两个VLAN,则相当于这台交换机逻辑上划分为两个交换机。VLAN的一个简单直观说…

控制for each循环次数_CCF CSP编程题解201312-1:出现次数最多的数

试题编号:201312-1试题名称:出现次数最多的数时间限制:1.0s内存限制:256.0MB问题描述:给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。输入格式:输入的第一行只有一…

旋流式沉砂池计算_旋流沉砂池设计方法

旋流沉砂池设计接口条件和主要参数设计旋流沉砂池前要确认的接口条件和信息包括:地质、气候等基本设计条件;可用地尺寸及在总图的位置坐标;地坪标高,上下游水位或范围,冻土层高度,管道覆土小深度要求&#…

parallelstream启动的线程数_高并发与多线程网络学习笔记(三)线程组和线程池

线程组线程组的作用是:可以批量管理线程或线程组对象,有效地对线程或线程组对象进行组织。构造函数ThreadGroup(String name)//默认parent为当前线程组 ThreadGroup(ThreadGroup parent, String name)具体方法//评估当前活跃的线程数,包括当前group和子g…

pytorch l2正则化_吴恩达深度学习 编程作业六 正则化(2)

推荐守门员应该将球踢到哪个位置,才能让自己的队员用头击中。1.无正则化模型判别是否有正则化与调用其他计算函数。准确率:0.948/0.915明显过拟合overfiting了。2.L2正则化公式如下,在原有cost函数基础上增加L2项,L2为参数w的均方…

vs中工具箱代表的意思_“日”除了代表太阳,其实还有这种意思,特别是出现在这些词语中的“日”...

对于“日”来说,大家都并不陌生,对于日的成语更是多得数不胜数,今天小编将日字成语进行了一个总结,需要用到的朋友们可以收藏!一:以“日”开头的成语,大多数形容的是时间。日积月累、日久天长、…

mysql or走索引吗_加了索引,mysql查询就一定会用吗?

小白白跑去鹅厂面试,面试官提出了一个很实际的问题: mysql增加索引,那些情况会失效呢?谈一下实际工作中遇到的情况。我们的小白白又抛出了白氏秘籍:用不用索引,找DBA小姐姐!啊?这是你…

基本农田卫星地图查询_如何基于西安80坐标查询定位

1. 概述水经注软件除了可以轻松下载无水印Google Earth卫星影像、有明确拍摄日期的历史影像、地方高清天地图、百度高德大字体打印地图,且可按1万/5千等国家标准图幅下载,下载含高度的全国矢量建筑、全国乡镇及街区行政区划、地名点、高速铁路网、公交路…

tcp的无延时发送_高并发架构的TCP知识介绍

这是关于高并发架构网络协议基础知识的第二篇,编程路上的基础心法!做为一个有追求的程序员,不能只满足增删改查,我们要对系统全方面无死角掌控。掌握了这些基本的网络知识后,相信一方面日常排错中会事半功倍&#xff0…

如何对一个变量数据进行正则判定_生存分析数据中的BuckleyJamesMultipleRegression Model...

一、模型简介目前,生存分析领域,最常用的是Cox比例风险回归模型,该模型具有良好的特性,不仅可以分析各种自变量对生存时间的影响,而且对基准风险分布不作任何要求(半参数模型)。Cox模型使用时要满足一定的条件&#xf…

格兰杰因果关系检验r语言_R语言系列第四期:R语言单样本双样本差异性检验

之前详细介绍了利用R语言进行统计描述,详情点击:R语言系列第三期:①R语言单组汇总及图形展示、R语言系列第三期:②R语言多组汇总及图形展示、R语言系列第三期:③R语言表格及其图形展示从这个部分我们就开始为大家介绍统…

java 配置jmstemplate_SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解...

1.导入jar包:org.springframework.bootspring-boot-starter-activemqorg.apache.activemqactivemq-pool2.填写配置文件(application.properties)#设置JMS(AMQ)spring.activemq.broker-urltcp://localhost:61616spring.activemq.useradminspring.activemq.passwordad…

切面是异步还是同步操作‘_分布式中采用Logback的MDC机制与AOP切面结合串联日志...

导读:在实际开发中,打印日志是十分重要的。在生产环境中,如果日志打得好可以快速地排查问题,而在分布式的场景下,一个请求会跨越多个节点,既一个业务可能需要多个节点协调配合处理。那么日志将会分散&#…

java 图类_Java集合类,一张图说清楚!

作者:skywang12345https://www.cnblogs.com/skywa...2019-03-23 10:32:24Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位置是java.util.*,Java集合主要可以划分为4个部分…

python 取整_马克的Python学习笔记#数字,日期和时间

对数值进行调整在Python中对整数和浮点数进行数字计算是很容易的。但是,如果你需要对分数,数组或者日期和时间进行计算,这就会稍微复杂点。对于简单的取整操作,我们可以使用内建的round(value, ndigits)函数就可,举个例…