Java学习笔记--继承和多态(下)
1.通过继承来开发超类(superclass)
2.使用super 关键词唤起超类的构造方法
3.在超类中覆盖方法
4.区分override和overload
5.在Object类中探索toString()类
6.发现多态性和动态绑定
7.描述解释为什么向下转型是必须的
8.在Object类中探索equals 方法
9.存储,取回,实现ArrayList的对象
10.使用ArrayList类实现Stack
11.超类中使用数据和方法,protected
12.使用final模块来禁止类和方法的覆盖
9.存储,取回,实现ArrayList的对象
ArrayList类,这个类对于存储对象来说很有用,你可以创建数组来存储对象,但是一旦数组创建完毕,它的大小已经固定了。Java提供了ArrayList类用来存储不限量的对象。
ArrayList 方法区
ArrayList() | 创建一个空的类 |
add(o:Object): void | 在列表的末尾加入一个元素 |
add(index: int, o:Object): void | 在列表的某个特殊位置加入对象 |
clear():void | 将列表清空 |
contains(o: Object):boolean | 是否包含某个对象 |
get(index: int):Object | 返回某个位置的元素 |
indexOf(o: Object ) : int | 返回某个元素的位置 |
isEmpty():boolean | 判断是否为空的列表 |
lastIndexOf(o: Object): int | 最后一个对象的位置 |
remove(o : Object): boolean | 匹配元素并从表中移除 |
size(): int | 表的大小 |
set(index: int, o:Object):Object | 设置某个位置上的元素 |
TestArrayList.java
public class TestArrayList {
public static void main(String[] args){
java.util.ArrayList cityList = new java.util.ArrayList(); cityList.add("Beijing");
cityList.add("Shanghai");
cityList.add("Tianjin");
cityList.add("Xiamen");
cityList.add("Fuzhou"); System.out.println("List Size?"+cityList.size());
System.out.println("Is Guangzhou in the list ? The answer is "+cityList.contains("Guangzhou"));
System.out.println("The location of Shanghai in the list? The answer is "+cityList.indexOf("Shanghai"));
System.out.println("Is the list is empty? The answer is "+ cityList.isEmpty()); cityList.add(2, "Hangzhou");
cityList.remove("Tianjin"); cityList.remove(1);
System.out.println(cityList.toString()); for(int i = cityList.size()-1 ;i>=0;i--)
System.out.println(cityList.get(i)+" ");
}
}
显示结果如下
这个对象当成字符串数组来使用,如果说存储对象了?
添加以下代码
list.add(new Circle(1, 2.5));
list.add(new Circle(2, 15.5));
for (int i = 0 ; i<2;i++)
System.out.println("The area of the circle"+((Circle) list.get(i)).number() + " is + "+ (Circle)list.get(i).GetArea() );
在原本没进行类型转换的时候会发现编译器报错了
关于类型转换可以参考以前的笔记。
10.使用ArrayList类实现Stack
关于栈的使用,Stack栈也是一种线性表,只不过这种线性表比较特殊,只能在表尾进行插入和弹出,对上面的例子进行更改,push和pop,只要在push方法中调用对应的方法。
数据区域
存对象
size
方法区
push: 找到队尾进行插插入
pop:找到队尾,进行get(index: int):Object并删除队尾 +remove(index: int): boolean
GetTop: 按照ArrayList类的方法修改即可
11.超类中使用数据和方法,protected
如果想要子类获得父类的数据和方法,非子类不能访问这些数据和方法。
将前面所学 public private protected
public 区域块块可以修改,pirvate 的区域块 子类不能够直接访问, protected的区域块可见但是不可改。
数据和方法的可见性
其他类 | 相同包 | 子类 | 不同包 | |
public | true | true | true | true |
protected | true | true | true | -- |
defaul | true | true | -- | -- |
private | true | -- | -- | -- |
12.使用final模块来禁止类和方法的覆盖
final 关键词
public fina class c{
.....
}
public class Test{
public final void main(){
.......
}
}
最新文章
- 升级 Visual Studio 2015 CTP 5 的坑、坑、坑
- Eclipse设置风格
- python windows安装
- Faster RNNLM (HS/NCE) toolkit
- linux-搜索
- oracle 中查看一张表是否有主键,主键在哪个字段上的语句怎么查如要查aa表,
- LeeCode-Single Number II
- ios 判断,qq,银行卡,手机号,邮编,生日,数字,字符串,护照, email
- 长连接 Socket.IO
- CI数据库操作_查询构造器类
- 最近面试 Java 后端开发的感受!
- 痞子衡嵌入式:忘掉cmd.exe吧!选用优雅的控制台终端(ConsoleZ)
- 关于maven的CoreException: Could not get the value for parameter compilerId for plugin 。。的错误
- 【代码笔记】Web-JavaScript-JavaScript注释
- PyQt5--QComboBox
- PHP链接MySQL,查询数据库内容,删除数据库内容。。。记住链接公式!!!
- 2018.12.12 codeforces 938E. Max History(组合数学)
- linux backtrace()详细使用说明,分析Segmentation fault【转】
- Puppetmaster高可用和可扩展的方案设计
- 替代iframe新逻辑