面向对象(继承,多态)
二维数组的定义格式:
第一种:直接给定了每一个一维数组中数组长度
数据类型[][] 数组名称 = new 数据类型[m][n]
第二种:给定了多少个一维数组,长度动态给定
数据类型[][] 数组名称 = new 数据类型[m][] ;
第三种:二维数组中直接给定元素值
数据类型[][] 数组名称 = {{元素1,元素2},{元素1,元素2}…}如何遍历二维数组int [][] arr = {{11,22},{33,44},{55,66}} ;外层循环:控制的是二维数组长度,内存循环,一维数组长度
代码块
在Java中,{}括起来,统称为代码块
局部代码块,构造代码块,静态代码块(随着类的加载而加载,只执行一次)
构造代码块:在每次执行构造方法之前,优先执行构造代码块
优先级:静态代码块>构造代码块>构造方法MYSQL数据库.. JDBC(Java连接数据库)
继承
class Zi extends Fu{…}
A. 继承的好处:
1)提高代码的复用性
2)提高代码的维护性
3)它是多态的前提
B. 继承的特点:
继承不能多继承,只能单继承,但是可以多层继承..
C.注意事项:
1)子类继承父类,可以继承父类所有的东西(除过构造方法),私有的(private),不能直接 访问,所有需要提供公共的方法…
2)不能继承构造方法,但是可以通过super()关键字去访问…
3)子类继承父类,子类的构造方法(有参/无参)都会默认的访问父类的无参构造方法, 优先让父类的数据进行初始化.
D. 假如:父类没有无参构造方法?会怎么样?如何解决?
会出现编译错误;
解决方法如下:
1)可以提供无参构造
2)通过super(父类的带参构造)..
3)通过this(),通过本类的无参构造,再通过无参构造间接的去访问父类的代码带参构 造..E.成员变量,
1) 如果子类继承父类,子类中的成员变量和父类中的成员变量名称不一致,分别输出
2)名称一致的情况:先在子类的局部位置找,找到,就输出
3)名称一致,还没有找到,到子类的成员位置找,有就输出,否则,到父类的成员位置 找,有就输出, 没有,就报错…
F.成员方法
子类继承父类,子类的成员方法名和父类的名一致,
先子类中找,有就调用,没有就会到父类中调用
方法重写:override
方法重载:overload
子类声明了一个和父类一模一样的方法声明,其目的是为覆盖父类的方法,完成自己 的功能…
4.多态:
同一时刻,体现出来的不同状态
A.多态的前提:
1)必须有继承关系
2)必须有方法重写
3)父类的引用指向子类对象(向上转型)
B.多态的成员访问特点:构造方法:都是对对象进行初始化的成员变量:编译看左,运行看左成员方法(非静态):编译看左,运行看右(存在方法重写)静态的成员方法:不能算方法重写,和类有关系: 编译看左,运行看左
C.多态的好处:提高代码复用性(由继承保证)提高代码的扩展性(由多态保证)
D.多态的弊端:不能子类特有功能;解决方法:向下转型:将父类的引用强制转换为子类的引用Fu f = new Zi() ;//向下转型Zi z= (Zi)f ;
E. 向下转型容易出现的问题:使用不当-ClassCastException:类转换异常解决方案:自己分析,内存的指向问题…
5.抽象类
A.抽象类:(抽象类有抽象类多态的形式。。)
将类中的功能抽象化,类变成抽象类
关键字:abstract
抽象类的特点:不能实例化 -不能创建对象
抽象了的子类是具体类才是研究课题:由于具体类所有抽象类通过他子类进行实例化
B.抽象类的成员特点:
成员变量:可以是常量,也可以是变量
构造方法:有参/无参
成员方法:可以是抽象的,也可以是非抽象的
(有抽象方法的类一定是抽象类,抽象类中不一定有抽象方法)
6.接口
A. 接口:
给一些类提供一些额外的功能(扩展功能),定义接口
关键字:interface
class 子实现类(后面加impl,做到见名知意) implements(实现) 接口{.......}
B.接口中的成员特点:
成员变量:此变量是一个常量:public static final :默认的修饰符
构造方法:接口没有构造方法
成员方法:都是抽象方法
C.抽象类和接口的区别?从三个方向去答1) 成员的区别成员变量:抽象类:既可以常量,也可以是变量接口:只能是常量,默认的修饰符:public static final构造方法:抽象类:有构造方法,无参/有参 (给对象进行初始化的)接口:没有构造方法成员方法:抽象类:可以有抽象方法,也可以有非抽象方法接口:只能是抽象方法 :默认的修饰符:public abstract2)类与类/类与接口关系的区别类与类之间的关系:继承关系,只支持单继承,不支持多继承,但是可以多层继承类与接口的关系:实现关系,一个类继承另一个类的同时,还可以实现多个接口...接口与接口的关系:是一种继承关系,既可以单继承,也可以多继承...接口1 extends 接口2,接口3...3)设计原则的 区别(1)抽象类: 是有继承关系---->体现的是一种"is a"的关系 (A是B的一种或者B是A的 一种)(2)接口:类和接口:实现关系--->体现的是一种" like a"的关系(扩展功能) :跳高猫 像 猫
形式参数和返回值问题
A.形式参数是引用类型的情况:
具体类: 需要传递的是该类 对象
抽象类:需要传递是该抽象类的子类对象
接口:需要传递是该接口的子实现类 (还可以匿名内部类的方式)
B.返回值的问题:
具体类:返回该该具体类的对象
抽象类:返回的是该抽象类的子类对象(间接的:抽象类多态…)
接口:返回的是该接口的子实现类对象(间接:接口多态)内部类:
A.成员内部类和局部内部类的写法
B.外部类访问成员内部类,局部内部类中的 成员使用的方式….
1) 成员内部类是非静态的,外部类访问内部类的成员
外部类名.内部类名 对象名 = 外部类对象.内部对象;
2) 如果成员内部类是静态的,外部类访问内部类的成员
外部类名.内部类名 对象名 = new 外部类名.内部类名() ;
内部类访问外部类的成员变量可直接访问,静态的内部类访问外部类的数据,该数据 必须static修饰,和当前静态内部类的成员方法是否为静态还是非静态“ 没有关系”C.匿名内部类:
前提:接口或者抽象类(可以抽象类也可以普通类)
new 接口名/类名(){
重写功能(){…}
}
本质:继承了该类或者是实现了该接口的子类对象..- final关键字特点:
final是一个修饰符,可以修饰类,方法和变量'
被final修饰的类是一个最终类不可以被继承;
被final修饰的方法是一个最终的方法.不可以被覆盖;
被final修饰的变量是一个常量,只能被赋值一次;
10.面试题
A. 方法重写和方法重载的区别?
方法重载:Overload
方法名相同,返回值类型相同,但是参数不同(参数类型不同,或者参数个数不同)
方法重写:Override
方法重写是相对于继承而言
重写的方法名,返回类型,参数类型,参数个数都要求和父类中一样.
B.final关键字的面试题?(final,finally,finalize有什么区别)final用于声明属性,方法和类,分别表示属性不可改变,方法不可覆盖,类不能继承finally是异常处理语句结构的一部分,表示总是执行finalize是object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法, 供垃圾收集时的其他资源回收,例如关闭文件等;
转载于:https://blog.51cto.com/13678296/2105666
面向对象(继承,多态)相关推荐
- day08_面向对象继承多态Object
面向对象_day03 学习目标: 1. 熟练掌握面向对象---继承 2. 熟练使用访问权限修饰符 3. 熟练掌握super关键字 4. 熟练掌握Object类 5. 熟练掌握面向对象---多态特性 视 ...
- 3、面向对象-继承-多态
1.继承 子类可以继承父类的一切,一个子类只能有一个父类,一个父类可以有多个子类 //父类 class Ren{ public $name; public $sex; public $yuyan; f ...
- day25 面向对象继承 多态
一.上节回顾: 命名空间: 静态属性:属于类内部的命名空间 动态属性:属于类内部的命名空间 对象属性:属于对象的,在类内和self发生联系,在类内和对象名发生联系 可以查看静态属性的都有哪些:类名,对 ...
- python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)
面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...
- linux c 多态原理,看了所谓的面向对象中靠继承多态实现的所谓重用 哥笑了
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这种重用不过还是引用别的类的函数或其它成员元素 我老听有些不懂编程却爱喷的人说什么面向对象代码可重用性"强" C写的代码 完全不能重用 ...
- python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态
六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...
- 一个经典实例理解继承与多态原理与优点(附源码)---面向对象继承和多态性理解得不够深刻的同学请进...
一 引子 都说面向对象的4大支柱是抽象,封装,继承与多态.但是一些初涉编程的开发人员,体会不到继承与多态的妙用,本文就试以一个经典实例来诠释继承与多态的用武之地.本实例的需求来自<重构>一 ...
- swift面向对象之多态与继承
swift面向对象之多态与继承 1.多态 运行时多态 运行时多态的要点 1.要有继承关系的存在 2.子类要重写父类的方法 3.父类类型的引用指向子类实例 2.继承 1.继承的注意 继承可以用于类而不能 ...
- python--编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音------使用类的封装继承多态的问题/使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息
编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音 ------使用类的封装继承多态的问题 class Instrumnet():#乐器类def make_sound(self):pa ...
- -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口
java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型 也就是 ...
最新文章
- react-native安装Ant Design
- SpringBoot+Mybatis+ Druid+PageHelper 实现多数据源并分页
- github删除错误的commit并保留之前的提交
- python安装Crypto:NomodulenamedCrypto.Cipher
- python中变量的作用域
- mysql常用命令整理
- 被限高消费后,王思聪又有新动作:新增对外投资...
- 怎么自动缩进_Python 的缩进是不是反人类的设计?
- Codeup_575A_剩下的树
- 用HTML代码实现个人简历的编写
- pandas训练集测试集划分_用pandas划分数据集实现训练集和测试集
- 基于Matlab的数字图像gui界面设计
- pad连接与数据流动
- 保护系统 WinXP故障恢复控制台完全指引
- 宝来客:结婚率创新低,黄金珠宝销售受影响
- python目前版本强势英雄_王者荣耀:分析S10星耀局以上一些强势英雄及版本目前排位的形势...
- 申请了雅虎邮箱的全新域名@yahoo.cn ID
- 饥荒插件制作应注意的几个问题
- linux下文件的重命名方法
- 互联网产品的定义及分类
热门文章
- vue获取商品数据接口_基于 request cache 请求缓存技术优化批量商品数据查询接口...
- BZOJ2038 : [2009国家集训队]小Z的袜子(hose)(莫队算法)
- Django的自带认证系统——auth模块
- netty源码解解析(4.0)-2 Chanel的接口设计
- Python 装饰器学习以及实际使用场景实践
- 准备树莓派下的模块开发环境
- wireshark1.8捕获无线网卡的数据包——找不到无线网卡!
- Python删除Delphi临时文件的小脚本
- T-sql检测文件夹是否存在
- urlrewrite 保持 posturl