一、封装

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

高内聚,低耦合。

使用封装的步骤:

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支持多层继承(继承体系,儿子继承父亲,父亲继承爷爷)

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

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

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

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

2.6 继承的注意事项

继承是 is a 的关系

学生 老师 是 人

苹果 西瓜 是 水果

狗 猫 是 动物

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

2.7 继承中成员变量的关系

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

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

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

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

2.8 this与super的区别

2.9 继承中构造方法的关系

构造方法:进行初始化

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

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

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

2.10 构造方法的注意事项

this与super不能同时出现

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

使用setXxx( ) getXxx( )方法

2.11 继承中成员方法的关系

不同名的方法名

直接使用

同名的方法名

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

方法重写

2.12 static关键字的使用

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

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

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

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

static的使用场景:

数据共享时 static 静态

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

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

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

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

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

只能在类中定义

静态只能访问静态

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

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

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

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

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

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

2.14 abstract

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

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

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

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

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

抽象类的使用场景:

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

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

2.15 方法重写

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

前提:存在继承关系

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

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

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

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

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

toString();

equals();

2.16 方法重载

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

2.17 代码块的执行顺序

静态代码块只执行一次

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

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

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构造方法"); } }

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

  1. 子类怎么继承父类方法中的变量_关于继承的那些事!

    第二阶段 JAVA面向对象 第二章 继承 其实在我们面向对象这一阶段的学习中,我们就是围绕Java的三大特性(封装.继承.多态)来讲解的,在上一掌内容中我们讲解了一部分封装的有关知识,今天我们来重点学 ...

  2. Java 中子类是否只继承父类的非私有变量和方法?

    今天在 CSDN 论坛中见到有人问在 Java 中子类是否只继承父类的非私有变量和方法(原贴在此).大部分跟贴都认为这句话是正确的,但是对于这个问题背后的本质理解却是错误的. 首先我们明确一下&quo ...

  3. java 实例方法直接调用超类的实例方法_Java继承关系中,父类方法使用实例变量和调用实例方法的探究...

    面向对象编程中,某一个实例方法使用实例变量和调用其它实例方法的情况是常见的.当存在继承关系时,这种情况就变得复杂起来.以下就对继承关系中,父类的某实例方法使用实例变量和其它实例方法的情况进行探究.因为 ...

  4. 子类调用父类方法时,方法中的变量用谁的

    public class T1 {private int a=6;public void ha(){System.out.println(this.a);} } public class T2 ext ...

  5. java 父类this_java父类方法中使用this,可以把this强转为子类对象,然后调用子类的实例方法,怎么解释?...

    1.代码如下 父类代码: public class A { public void a(){ B b=(B)this; System.out.println(b.getNum()); System.o ...

  6. 【Python】继承、父类、子类、方法重写、子类调用父类方法、super()函数、多继承

    Python继承 2021/6/21 周一 学习内容:父类.子类.方法重写.子类调用父类方法.super()函数.多继承 Python入门,主要是看 菜鸟教程.w3school 网站,以及电子工业出版 ...

  7. 谈谈java中成员变量与成员方法继承的问题

    谈谈java中成员变量与成员方法继承的问题 关于成员变量和成员方法的的继承问题,我也可以做一个小测试,来看看结果. 首先我们先创建一个父类: 其次再创建一个子类,子类中要比父类中少一个成员方法: 这样 ...

  8. JavaScript 继承父类方法的正确姿势

    JavaScript 继承父类方法的正确姿势 不想看前期的介绍可以直接划到最下面看总结和正确姿势,跳过原因的讲解. 初学 js ,总是喜欢把方法直接定义在对象内部,类似于 Java 那样. 下面定义一 ...

  9. python-类的继承和多态-继承父类方法和属性的多种方法-继承多个类,继承顺序的研究

    一.Reference Python interview - override & overload_加藤蜀黍的博客-CSDN博客 Python:类的继承,调用父类的属性和方法基础详解_奥卡姆 ...

最新文章

  1. 使用Mahout搭建推荐系统之入门篇3-Mahout源码初探
  2. document.getElementById vs jQuery $()
  3. PHP_MySQL笔试题目一
  4. Windows server 2008 R2 服务器安装 MySql 5.6.36 64位绿色版 报系统错误1067
  5. 一个功能完备的.NET开源OpenID Connect/OAuth 2.0框架——IdentityServer3
  6. Bootstrap3 正文文本样式
  7. 扫盲了,RC,RTM,Beta等各个版本的意思
  8. 开滦二中2021高考成绩查询,2021唐山中考录取分数线查询
  9. Matplotlib Toolkits:python高级绘图库seaborn
  10. js 禁用和解除禁用按钮_js禁用button,js 将某个按钮禁用5秒钟
  11. linux手机刷机包制作工具_安卓10刷机包
  12. 快速理解旋转运动公式
  13. JAVA学习——GUI鼠标画图交互练习
  14. 浏览器书签有效性验证
  15. Files的常用方法都有哪些?
  16. 设备驱动中的并发控制-自旋锁
  17. OKR使用经验 11-12双月
  18. 拓嘉辰丰电商:拼多多服务激励分有什么意义?怎样查看
  19. 程序员叫啥名字_他们的名字叫程序员
  20. 项目实施中的团队协作--关于发现问题、解决问题有效模式的探讨

热门文章

  1. 微服务系列之ZooKeeper注册中心和Nacos注册中心Nacos和Zookeeper对比
  2. spring源码阅读--@Transactional实现原理
  3. java获取当月有几天_腾讯程序员裸辞3个月,转行去送外卖,曝出当月收入网友:又骗我去送外卖...
  4. python2转python3代码_Python2代码转成Python3代码
  5. ssm框架sql换成MySQL_搭建ssm框架,可实现登录和数据展示以及增删改查
  6. mysql查询单词出现的位置_在MySQL中从左侧获取一些单词
  7. 嵌入式linux组件,嵌入式Linux系统的几大组件!
  8. oracle+内存错误,oracle使用内存的错误,ORA-27102: out of memory
  9. python中msg是什么意思_python下载.msg文件的附件
  10. Linux 实操———CentOS 6 安装配置 Oracle JDK 1.8