面向对象有三大特性:继承,封装,多态

1.继承:

(1)继承的特点:A,java支持单根继承,不支持多根继承

B,java支持多层继承(继承体系)

(2)细节注意:A.子类只能继承父类的非私有成员(成员方法和成员变量)
    B.子类不能继承父类的构造方法,但是我们可以通过super去访问父类的构造

C.千万不要因为部分功能而去使用继承,在Java当中,我们使用继承体系的时候 应该遵循一个"is a"的原则

(3) 继承中成员变量的关系:
a.子类的变量名和父类的变量名不一致时,各自找各自的
b.子类和的变量名和父类的变量名一致时:
1.先在子类局部中去寻找,有就使用
2.先在子类成员中去寻找,有就使用
3.在去父类的成员位置,有就使用,没有就报错

(4)继承中构造方法的关系: 
a.子类中的所有构造方法,都会默认访问父类的无参构造。
b.为什么要访问?
因为子类继承父类会使用到父类的数据,所以子类必须先访问父类的
无参构造,以便将父类的数据进行初始化。

注意:子类的构造默认的第一句代码是super();

如果父类没有提供无参构造,那么会有什么结果?
报错;
如何解决?
a.给父类添加一个无参构造

b.通过super关键字去访问父类的其他构造

2.封装:

在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

要访问该类的代码和数据,必须通过严格的接口控制。

封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

封装的优点

  • 1. 良好的封装能够减少耦合。

  • 2. 类内部的结构可以自由修改。

  • 3. 可以对成员变量进行更精确的控制。

  • 4. 隐藏信息,实现细节。


实现Java封装的步骤

1. 修改属性的可见性来限制对属性的访问(一般限制为private),例如:

publicclassPerson{privateStringname; privateintage;}

这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。

2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,例如:

publicclassPerson{privateStringname; privateintage;​ publicintgetAge(){returnage; }​ publicStringgetName(){returnname; }​ publicvoidsetAge(intage){this.age = age; }​ publicvoidsetName(Stringname){this.name = name; }}

采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。

3.多态:

同一个对象,在不同时刻体现出来的不同状态。

举例:
猫是猫,猫是动物
多态的前提:
a.要有继承关系
b.要存在方法的重写
其实方法重写不是多态必须的,但是不这样做就没有任何意义
c.要有父类的引用指向子类的对象
Fu fu = new Zi();

用代码的实现下多态:
多态中成员访问的特点:
a.成员变量
编译期,看左边,运行期看左边
b.成员方法
编译期,看左边,运行期看右边
c.构造方法
创建子类对象的时候,先访问父类构造,对父类的数据进行初始化
d.静态方法
编译期,看左边,运行期看左边

除了成员方法,其余全部看左边,因为成员方法存在方法重写,重写会覆盖父类 所以运行看子类就可以了

多态的好处:
a.提高了代码的可维护性(继承来体现)
b.提高的代码的扩展性(由多态来体现)

多态的弊端:
不能使用子类的特有的功能。

解决方法:
a.直接创建子类对象即可(可以,但是 不合适也不合理。而且非常耗内存)
b.把父类引用直接强制转换为子类引用(向下转型)

注:部分笔记来源于其他网站!!!

java面向对象之个人总结的更多相关文章

  1. JAVA面向对象

    JAVA面向对象 对象   我们生活中能看到能摸到的一切事物都是对象.在程序中模拟出生活中的所有东西万物皆对象   只要是对象--属性和行为(方法)   属性   对象有什么   例如:学生有姓名.学 ...

  2. 理解JAVA - 面向对象(object) - 属性,方法

    理解JAVA - 面向对象(object) - 属性,方法 多态的体现:    向上造型,父类接收子类对象:向上造型:    从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...

  3. Java面向对象㈠ -- 封装

    Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...

  4. 谈谈Java面向对象的三大特性

    Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...

  5. Java面向对象:接口

    Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...

  6. 实验二 Java面向对象程序设计

    实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...

  7. java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final

    一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...

  8. 20145212《Java程序设计》实验报告二 《 Java面向对象程序设计》

    20145212 实验二< Java面向对象程序设计> 实验内容 单元测试 三种代码 伪代码 百分制转五分制: 如果成绩小于60,转成"不及格" 如果成绩在60与70之 ...

  9. 20145213《Java程序设计》实验二Java面向对象程序设计实验报告

    20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...

  10. 20145206《Java程序设计》实验二Java面向对象程序设计实验报告

    20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

随机推荐

  1. GitHub已将持续集成服务器Janky开源

    GitHub已将Janky开源,这是他们构建在Jenkins之上的持续集成服务器,并在其中增加了聊天自动化工具Hubot. 除了一般的Jenkins功能之外,Janky还通过Hubot对功能进行了补充 ...

  2. SqlSugarClientHelper

    using SqlSugar; using System; using System.Collections.Generic; using System.Configuration; using Sy ...

  3. redis订阅与发布(把redis作为消息中间件)

    订阅频道127.0.0.1:6379> subscribe chat1Reading messages... (press Ctrl-C to quit)1) "subscribe&q ...

  4. React +Redux+ Ant Design + echarts 项目实践

    项目框架 采用React.js作为项目的框架 采用redux作为数据管理的框架 采用antd作为项目的UI组件 采用echarts完成项目中折线图的绘制 个人项目工作流程总结 拿到UI高保真图片之后先 ...

  5. 将远程UI分支克隆到本地UI分支

    git checkout -b UI git remote add origin <url> git fetch origin git branch --track UI origin/U ...

  6. leetCode题解之Array Partition I

    1.题目描述 2.分析 按照题目要求,主要就是对数组进行排序 3.代码 int arrayPairSum(vector<int>& nums) { ; sort( nums.beg ...

  7. c# 设计模式 之:策略模式

    算法与对象的耦合:     对象可能经常需要使用多种不同的算法,但是如果变化频繁,会将类型变得脆弱...             动机:     在软件构建过程中,某些对象使用的算法可能多种多样,经常 ...

  8. selenium&PhantomJS笔记

    配置pip文件 Windows下pip 配置文件的位置%HOME%/pip/pip.ini linux下安装pip,以Debian Linux为例su -apt-get install python- ...

  9. [SQLServer] 内存占用查看

    SELECT (physical_memory_in_use_kb/1024) AS Memory_usedby_Sqlserver_MB, (locked_page_allocations_kb/1 ...

  10. 名词解释:Linux内存管理之RSS和VSZ

    Linux内存管理中不管是top命令还是pmap命令,都会有RSS和VSZ这两个名词,这里解释一下: RSS( Resident Set Size )常驻内存集合大小,表示相应进程在RAM中占用了多少 ...