面向对象

面向对象是一种思维方式,相对于面向过程而言的。
面向过程在流程中关注动作执行的每一个细节 — 自己动手做
面向对象重点找这个对象,只要找到了对象,那么这个对象所具有的功能就能够被使用 — 找别人做
类与对象的关系
根据一类对象进行抽取和总结,将这类对象的特征抽取成了属性,将这类对象的行为抽取成了方法,用类表示这一类对象 -> 类是对象的抽取和概括的过程

面向对象的特征

封装
将代码进行提取和总结,抽取成不同的形式 — 封装
体现形式:方法、类(属性的私有化 - 将属性限制为私有的,然后提供对外的设置和获取的方法,然后在方法中进行限制使数据更加符合常理)
优势:提高了代码的复用性,保证了数据的合法性
权限修饰符
指在Java中用于限定使用范围的关键字
本类中 子类中 同包类中 其他类中
public 可以 可以 可以 可以
protected 可以 可以 可以 不可以
默认 可以 同包子类可以 可以 不可以
private 可以 不可以 不可以 不可以
继承
如果一些类中含有相同的代码,那么可以将这些相同的代码提取到一个新的类中,然后通过extends关键字让原来的类和新的类产生关系 — 继承。 通过继承,原来的类就称之为了子类(派生类),新的类就成了父类(超类/基类)。
子类通过继承父类可以使用父类中的一部分方法和属性
注意:子类继承了父类的全部的数据域(方法+属性),但是继承之后只有一部分数据域对子类可见
在Java中,支持的是类和类之间的单继承 -> 一个子类只能继承一个父类,但是一个父类可以有多个子类
单继承一定优于多继承吗? - 不对
多继承比单继承能够更好的提高代码的复用性

 class A {
public int m(){return ;}
}
class B {
public boolean m(){return false;}
}
class C extends A, B{}
C c = new C();
c.m(); // 返回值类型能确定吗?

多继承导致在调用方法的时候可能产生歧义
优势:提高代码的复用性,避免方法的调用产生歧义
super关键字
在子类中用于表示父类对象的引用,可以在子类中调用父类中的方法的属性。
super语句 —
子类在继承父类之后,子类的构造方法中会含有一个super语句。如果没有手动指定super语句,那么默认使用super()调用父类无参的构造;如果父类只提供了含参构造,那么子类就必须手动提供对应形式的super语句
— super语句必须在子类构造方法的首行
方法的重写/覆盖
在父子类中存在了方法签名相同的非静态方法。遵循 “两等两小一大”原则:
1. 方法签名相同
2. 如果父类中的方法的返回值类型是基本类型/void,那么子类重写的方法的返回值类型与父类一致

 class A {
public void m(){}
}
class B extends A {
public void m(){}
}

3.如果父类中的方法的返回值类型是引用类型,那么子类在重写方法的时候,返回值类型要么与父类一致,要么是父类方法返回值类型的子类

 class A {}
class B extends A {}
class C {
public A m(){return null;}
}
class D extends C {
public B m(){return null;}
}

4.子类重写的方法的权限修饰符的范围要大于等于父类中对应方法的权限修饰符的范围

 class A {
public void m(){}
}
class B extends A {
public void m(){}
}

注意:如果父类中的方法用private修饰,那么这个方法对子类不可见,所以此时与子类中的方法构不成重写

多态

编译时多态:方法的重载
add(2, 4) -> add(int, int)
add(3, 1, 7) -> add(int, int, int)
运行时多态:向上造型和方法的重写 — 基于继承的
注意:如果使用向上造型来创建对象,那么这个对象所能调用的方法看的是父类中的声明,方法如何执行看的是子类中的实现过程
重写的理解
1. 子类重写的方法的权限修饰符的范围要大于等于父类中对应方法的权限修饰符的范围
2. 如果父类中的方法的返回值类型是引用类型,那么子类在重写方法的时候,返回值类型要么与父类一致,要么是父类方法返回值类型的子类
注意:Java中所有的基本类型之间没有继承关系,之所以能够自动提升,是因为所表示的范围是否能够包含

Java面向对象知道这些就够了的更多相关文章

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

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

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

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

  3. Java面向对象(封装性概论)

     Java面向对象(封装性概论) 知识概要:                   (1)面向对象概念 (2)类与对象的关系 (3)封装 (4)构造函数 (5)this关键字 (6)static关键 ...

  4. 20145207《Java程序设计》实验二(Java面向对象程序设计)实验报告

    <Java程序设计>实验二(Java面向对象程序设计)实验报告 目录 改变 Java面向对象程序设计实验要求 实验成果 课后思考 改变 看了下之前实验二的整体,很搞笑,大图+代码,没了.. ...

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

    20145201实验二 Java面向对象程序设计 初步掌握单元测试和TDD 实验步骤 (一)单元测试 (1) 三种代码 编程是智力活动,不是打字,编程前要把干什么.如何干想清楚才能把程序写对.写好.与 ...

  6. 八、Java面向对象编程

    Java面向对象 初识面向对象 面向过程 & 面向对象 面向过程思想 步骤清晰简单,第一步做什么,第二部做什么... 面对过程适合处理一些较为简单的问题 面向对象思想 物以类聚,分类的思维模式 ...

  7. JAVA面向对象

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

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

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

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

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

随机推荐

  1. nyoj 214——单调递增子序列(二)——————【二分搜索加dp】

    单调递增子序列(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长 ...

  2. BulletedList项目控件基础CSS基础

    呈现形态&控件语法: <ul id=“...”> <li></li> . <li></li> . <li></li ...

  3. ACM-线段树区间更新+离散化

    区间更新与单点更新最大的不同就在于Lazy思想: http://blog.sina.com.cn/s/blog_a2dce6b30101l8bi.html 可以看这篇文章,讲得比较清楚 在具体使用上, ...

  4. js系列之js简介

    该系列教程都来源于:廖雪峰老师的博客 JavaScript是世界上最流行的脚本语言,因为你在电脑.手机.平板上浏览的所有的网页,以及无数基于HTML5的手机App,交互逻辑都是由JavaScript驱 ...

  5. 利用ajax短轮询+php与服务器交互制作简易即时聊天网站

    主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Server-sent Events). 本文主要介绍ajax短轮询的简易实现方式. 看懂此文 ...

  6. oracle学习篇九:同义词

    Oracle数据库中提供了同义词管理的功能.Oracle同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性. 在Oracle中对用户的管理是使用权限的方式来管理的,也就是说, ...

  7. iOS开发之Objective-c的AES128加密和解密算法的实现

    #import <Foundation/Foundation.h> #import <CommonCrypto/CommonDigest.h> #import <Comm ...

  8. Weka:call for the EM algorithm to achieve clustering.(EM算法)

    EM算法: 在Eclipse中写出读取文件的代码然后调用EM算法计算输出结果: package EMAlg; import java.io.*; import weka.core.*; import ...

  9. 初学jboss

    1.简单安装-环境变量配置-创建控制台用户并访问控制台.   下载了windows版的jboss服务器(jboss-as-7.1.1.Final)     依赖JDK1.6以上版本,jdk环境变量等就 ...

  10. 卡方分布、卡方独立性检验和拟合性检验理论及其python实现

    如果你在寻找卡方分布是什么?如何实现卡方检验?那么请看这篇博客,将以通俗易懂的语言,全面的阐述卡方.卡方检验及其python实现. 1. 卡方分布 1.1 简介 抽样分布有三大应用:T分布.卡方分布和 ...