java 三大基本特征
java中的面向对象的三大基本特征是:【封装】、【继承】、【多态】
封装:对象要有一个明确的边界;边界的划分(对象各司其职、对象的粒度、对象的可重用性)
- 属性(bean、pojo):私有的private,有set和get方法
- 方法:公开或私有 ,public/private
- 方法声明和实现(interface,implements)
继承:共性放到父类,特性放到子类;父类 --> 子类 --> 一般
- 关键字: extends
- java中一个类最多只能有一个直接的父类,即单继承(具有简单性、树形结构)
- tip:java中要实现多继承,通过接口来实现。
- 父类中所有属性和方法都能继承给子类;父类中的私有方法不能继承给子类。
- java中的访问修饰符
访问修饰符 访问权限 继承 private 本类 不能继承 default 本类+同包 同包子类可以继承 protected 本类+同包+不同子包 可以继承 public 公开 可以继承
- 构造对象过程
(1)分配空间
(2)递归地构造父类对象
a. 父类 初始化属性
b. 父类 构造方法
(3)初始化属性
(4)调用构造方法
- super
super() 调用父类的构造方法,只能出现在构造方法的第一行
super.方法名 super表示父类的对象,通过它去调用父类的方法
注意:在写类的时候,一定要写默认无参的构造方法,如果一个构造方法的
第一句既不是this(),也不是super()时,那么就会在这里隐含的调用
他的父类的无参的构造方法,即隐含的有super()。
多态:运行时多态(子类的对象放在父类的引用中,例如 Animal a=new Dog,子类对象当父类对象来使用。)
- 多态原则:
(1)对象类型不变
(2)只能用引用调用其引用类型中定义的方法
(3)运行时,根据对象的实际类型去找子类覆盖之后的方法
例子:
有Animal类中有eat()和sleep()两个方法,sleep()中睡8小时;子类Dog中有
eat()方法,sleep()方法中睡6小时,还有wangwang()方法。
现创建Animal a=new Dog(); 不能调用a.wangwang(),调用a.sleep()输出睡6小时。 - 对象的强制转换 :
格式: 引用 instanceof 类型
引用所指的对象是否与类相符,返回值boolean值。
用法:
Animal a=new Cat();
if(a instanceof Dog)
{
Dog d=(Dog)a;
d.wangwang();
}
说明:如果只有Dog d=(Dog)a;运行时错误,因为a是Cat而不是Dog (多态原则第一条) - 多态的灵活变换
(1)用于参数列表上:
public void m(A a){} 可以用A类的任何子类对象作为参数
(2)用在返回值上:
public A m(){} 这个方法可能返回A类的任何子类对象
java 三大基本特征的更多相关文章
- Java三大特征之继承(二)
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...
- java中的面向对象的三大基本特征
转载,原文来自http://blog.sina.com.cn/s/blog_5f79a56a0100c6ig.html 众所周知,java中的面向对象的三大基本特征是:[封装].[继承].[多态] 一 ...
- [转]JAVA三大框架SSH和MVC
Java—SSH(MVC) JAVA三大框架的各自作用 hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 也就 ...
- JAVA三大框架SSH和MVC
Java—SSH(MVC) JAVA三大框架的各自作用 hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 ...
- 浅谈Java三大特性
Java三大特性想必大家都不陌生:封装.继承以及多态.很多刚接触Java的小伙伴都会想,它们到底有什么了不得之处,又赋予Java这门编程语言什么魔力呢?今天我们来探讨一下吧~~ 首先,名词解释: 封装 ...
- Java三大框架 介绍
三大框架:Struts+hibernate+spring Java三大框架主要用来做WEN应用. Struts主要负责表示层的显示 Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作 ...
- Java 三大特性——封装、继承、多态
一.封装 封装,实际就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用. 概念:在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节 ...
- java 三大框架 介绍
三大框架:Struts+Hibernate+Spring Java三大框架主要用来做WEN应用. Struts主要负责表示层的显示 Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作 ...
- JAVA三大框架的各自作用
http://christhb.blog.163.com/blog/static/98982492011727114936239/ 一.Spring Spring是一个解决了许多在J2EE开发中常见的 ...
随机推荐
- SE18 BADI定义 / SE19 BADI 实现
明天花30分 再研究下这个: 如果你知道一个BADI名称,可以: 1)使用SE18,输入该BADI名称后,选择Interface,然后查看对应的接口实施样例代码(Example implementat ...
- 使用doctrine的内存耗尽解决办法
PHP Fatal error: Allowed memory size of xxx xxx xxx bytes exhausted 无论是插入大量数据或者查询大量数据时,都可能因为数据量太大而出现 ...
- [haoi2015]T1
题意:给定你一颗树,要求你在这棵树中确定K个黑点和N-K个白点,使黑点间与白点间两两距离之和最大,输出最大值.n<=2000 对于这道题,我想了好几个思路,包括点分治,贪心,动规,网络流等等,实 ...
- CSU - 1803 —— 数学题
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1803 Description 给出正整数 n 和 m,统计满足以下条件的正整数对 ...
- codeforces B. Trees in a Row 解题报告
题目链接:http://codeforces.com/problemset/problem/402/B 题目意思:给出n个数和公差k,问如何调整使得ai + 1 - ai = k.(1 ≤ i < ...
- 确定mapkeeper使用的leverdb库路径
目前libleveldb的a或so库有三个路径,/usr/lib, /usr/lib/x86_64-linux-gnu , /usr/local/lib 使用 ls -d -1 /usr/lib/* ...
- Python:递归
递归两个基本要素: (1) 边界条件:确定递归到何时终止,也称为递归出口. (n = 1)(2) 递归模式:大问题是如何分解为小问题的,也称为递归体.(n*(n-1)! n>1) 例:累加 ...
- ZIP伪加密(deprecated)
ZIP伪加密 经过伪加密的apk,改成zip格式打开会发现里面的文件都经过了加密. APK实际上是Zip压缩文件,但是Android系统在解析APK文件时,和传统的解压压缩软件在解析Zip文件时存在差 ...
- 点分治 [IOI2011]Race
BZOJ2599. 放板子.利用agc009-D 代码简洁了很多 #include <bits/stdc++.h> #define N 200005 using namespace std ...
- bzoj2962
线段树+卷积 这个东西直接算不太好,但是合并两段结果却很方便,假设c[i]表示选i个数乘积的和,那么$a[i]=\sum_{j=0}^{i}{b[j]*c[i-j]}$ 线段树维护即可 #includ ...