Java-包和final
包的使用
不同包下的类调用时 要引用包名
1 | public class Test{ |
如果不想用包名来调用类 那就在代码前加入import引入包
1 | import heima.test.Studnt |
不同包下的类调用时 要引用包名
1 | public class Test{ |
如果不想用包名来调用类 那就在代码前加入import引入包
1 | import heima.test.Studnt |
在以前 对多态的理解就只停留在 重载 和 重写 其实多态还有很多方面的知识
我们先举一个多态的最典型的运用
1 | // 假设我们有一个父类person 两个子类student teacher |
上面两个对象的创建都是正确的 但是a 和 b 和正常的子类又有一些不同
多态有什么典型的运用场景?
其实很简单 假如有一个场景 用户注册的页面 假如一共有三种对象 老师 学生 管理员
那么我们的注册函数传入的对象参数填什么呢? Stuent? Teacher? Admin? 这个时候没有多态的话,我们就要单独创建出三个注册函数 分别传三个对象 但是有了多态就可以用父类作为参数
1 | public static register(Person p){ |
当类与类之间 存在相同的内容 并满足子类是父类的一种 就可以考虑使用继承 来优化代码
Java中只支持单继承 不支持多继承 但支持多层继承
每一个类都直接或者间接的继承于Object
子类不能调用父类中的私有方法
子类到底能继承父类中的那些内容
| 父类 | public | private |
|---|---|---|
| 构造方法 | 不能 | 不能 |
| 成员变量 | 能 | 能 |
| 成员方法 | 能 | 不能 |
其实这个问题很简单 构造方法一定要和类同名对吧? 如果你调用父类的构造方法 子类的名称怎么可能和父类名称一样 构造方法自然就冲突了
注意表格里面 无论是否父类中成员变量是否私有化 子类貌似都可以继承
实际上 子类确实会继承父类中的私有成员变量 不够不能去之间调用
其实黑马这里也是在放屁 私有化成员变量在类外本来就不能调用 无关子类
私有化的成员方法不可继承
对于同一个类的不同对象 如果存在一个共享的变量 那我们可以设置成静态变量
静态变量被该类的所有对象共享 静态变量通常直接通过类名来调用
需要重点强调一下 Java中的集合是多种数据结构的统称 并不等同与c++中的set概念
其中 ArrayList就是其中的一种
集合和数组的对比
其实这里的内容也不是很多 这篇博客也就是为了温习this的运用 以前都学过
题干 : 返回二叉树层序遍历的结果 同时写出递归和非递归的写法
至于什么是层序遍历不用我赘述 其实就是用BFS的方法去搜索二叉树
同样 包含递归和非递归的写法 非递归写法需要用队列来实现
栈的运用中经典中的经典 不过算法竞赛不会考这些导致当时就没用心去搞懂
题干:
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
1.左括号必须用相同类型的右括号闭合。
2.左括号必须以正确的顺序闭合。
3.每个右括号都有一个对应的相同类型的左括号。
不匹配的情况只有三种 搞懂就是很简单的题目!!
虽然python c++中都会有字符串查找的库函数 在刷题的过程中遇到了查找子串的问题 通常直接调用函数就可以解决 但是KMP作为十分重要的算法 很大概率会在面试中手撕 虽然依然要掌握
题干:给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。