| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> day10 面向对象编程 -> 正文阅读 |
|
[Java知识库]day10 面向对象编程 |
1、数组排序算法选择排序思路分析 缺点:交换频繁,浪费时间 改进版选择排序 改进:加一个mindex记录最小值的下标
快速排序关键思想:分区+递归 利用栈换取了时间 思路分析 代码实现
JDK内部就是快排:双分区快排 调用函数:arrary.sort(); 2、多维数组二维数组:数组的数组,它的元素是一维子数组 初始化 1)动态初始化
2)静态初始化:
3)特殊写法情况:int[] x,y[]; x是一维数组,y是二维数组。 Java中多维数组不必都是规则矩阵形式 数组创建在内存中的形式 取最大值和最小值
3、可变参数方法1)参数可变,类型不可变 2)完全兼容了int数组? ????????int... values 本质就是数组,编译帮我们对我们传入的散数进行了转化 3)main方法中的args命令行参数本质也是可变参数 4)可变参数是JDK版本的新技术 ????????String[]是通用的,但是使用String...要在JDK1.5以上版本使用 5)一个方法中只允许有一个可变参数,并且必须放在最后
4、继承什么是继承?继承表达所有权? (所有权:没有直接使用权,有间接使用权) 继承:就是从现有类创建子类,现有类称为父类,基类(子类以父类为基础进行扩充),超类(在子类中通过super限定来特指父类成员) 什么是子类?1)子类是父类的扩充,子类>=父类 2)子类要继承父类所有成员,构造器除外 3)子类可以添加新的成员 ????????????????特有成员;子类中扩充的成员 语法格式:
内存角度分析 子类>=父类 内存中创建的子类对象,会包含父类中的所有属性,只有一个纯子类对象,可以看成子类对象中暗含了一个父类对象,但实际并没有创建父类对象,只是可以把子类对象当成父类对象来使用。 什么情况要用继承呢?多个类有相同属性和行为时,为了提升代码重用,使得子类的写法更简单 继承的作用: 1)提高复用性 2)类之间产生关系,多态的前提 3)动态性 多层继承和多重继承的区别?1)多层继承,又称为单继承。 ????????一个子类只能有一个父类 ????????????????直接父类:离得近 ????????????????间接父类:离得远 2)多重继承:一个子类拥有多个直接父类(不允许),因为多重继承时,如果多个直接父类中都有同名方法,子类会混乱 java中只支持单继承,多重继承时不允许的! 私有成员、方法能否被继承?能继承,但是不能直接使用。 因为被private修饰成员只能在本类中使用,子类不是本类,所以在子类中不能直接使用,可以在父类中添加公共的get/set方法,在子类中可以通过父类继承的get/set方法间接使用。起保护作用!! 举例:内脏、CPU的使用 构造器不能继承,但是可以调用吗?可以的,所有子类构造器都会默认调用父类中的无参构造器 super();如果不写,会有隐式的父类无参构造器的调用 ?注意点: 1)子类构造器中的第一行必须是this(...)或super(...) this(...)作用是间接调用父类构造 super(...)作用是直接调用父类构造器 2)结论:子类构造器必须先调用父类构造器 如果this(...)和super(...)同时出现会两次初始化 5、方法的覆盖(override)最重要的的概念 没有之一 定义:子类对从继承来的父类方法进行改造 ????????????以继承为前提 覆盖原因:父类方法不再满足需要 覆盖条件: 1)子类和父类中 方法签名(方法名、参数列表和返回值类型)必须完全相同,参数列表一致体现为类型一致、参数一致、顺序一致 2)覆盖方法不能比被重写方法有更严格的访问权限,子类控制修饰符>=父类 3)都必须是static 注意:如果方法重写,执行的时候执行的是子类中的方法
为什么在父类中不写完整? 因为父类是被动的,它永远不知道那些子类继承了它。 属性不能覆盖,永远都是共存! 如果子类和父类中有相同属性 this.age表示当前类的age super.age才是从父类中继承来的 方法覆盖必须加注解!!! 6、注解特殊的注释,不参与程序的运行,但可以被编译器和JVM识别 本质是修饰符,放在方法前面 @override注解: 请求编译器做方法覆盖的检查,如果这个方法的覆盖出问题,请编译出错 格式如下:
7、super关键字super特指当前子类的父类 若子类中有两个say()方法, super.say()表示父类中的被覆盖的方法 对于测试类而言,那么子类重写的方法是唯一方法,父类中被重写的方法永不可见 好处:父类发生变化,不用再修改子类,实现连环调用 可与上面的例子作比较
super作用:可访问父类中的属性、方法、构造器 注意点:super的追溯不仅限于直接父类 this和super的区别: 1)this表示当前对象整体 2)super表示只是一个内存标识,用于限定从父类继承的成员 3)super绝不是对象! 8、访问权限修饰符?总结?今天主要学习的内容: 1)数组排序算法; 2)二维数组; 3)可变参数方法; 4)继承: 5)this关键字; 6)方法的覆盖(重点); |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:25:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |