Java学习笔记--继承和多态(下)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(){
          .......
    }
}

 

以上是关于Java学习笔记--继承和多态(下)的主要内容,如果未能解决你的问题,请参考以下文章

No2_1.接口继承多态_Java学习笔记_接口

Java学习笔记--继承和多态(上)

java学习笔记-多态

java学习笔记3(datawhale教程)

Java学习笔记之十六浅谈Java中的继承与多态

Java学习笔记—多态