Java ArrayList和继承

Java ArrayList和继承

  • 1. Math类(方法补充及复习)
  • 2. ArrayList类
    • 2.1 什么是ArrayList
    • 2.2 ArrayList的使用步骤
    • 2.3 基本数据类型对应的引用类型
    • 2.4 常用API
    • 2.5 代码部分
  • 3. 继承
    • 3.1 继承的定义
    • 3.2 继承的特殊情况
    • 3.3 继承的格式
    • 3.4 重写的应用
    • 3.5 super和this
    • 3.6 继承的特点
    • 3.7 抽象类
      • 3.7.1 抽象类的概述
      • 3.7.2 abstract的使用格式
      • 3.7.3 抽象类的使用

1. Math类(方法补充及复习)

public class Demo01Math {
    public static void main(String[] args) {

        //求绝对值
        int a = Math.abs(-9);
        System.out.println("求绝对值:(abs -9)"+a);

        //向上取整
        double ceil = Math.ceil(3.14);
        System.out.println("向上取整:(ceil 3.14)"+ceil);
        double ceil1 = Math.ceil(-3.14);
        System.out.println("向上取整:(ceil -3.14)"+ceil1);

        //向下取整
        double floor = Math.floor(3.99);
        System.out.println("向下取整:(floor 3.99)"+floor);
        double floor1 = Math.floor(-3.99);
        System.out.println("向下取整:(floor -3.99)"+floor1);

        //四舍五入      参数+0.5  再进行floor
        double round = Math.round(-3.9999);
        System.out.println("四舍五入:(round -3.9999)"+round);

        //开方
        double sqrt = Math.sqrt(9);
        System.out.println("开方:(sqrt 9)"+sqrt);
    }
}

Java ArrayList和继承_第1张图片

2. ArrayList类

2.1 什么是ArrayList

java.util.ArrayList 是大小可变的数组实现,存储在内的数据称为元素。
此类提供一些方法来操作内部存储的元素。ArrayList中可不断添加元素,
其大小也自动增长。

2.2 ArrayList的使用步骤

  • java.unit.ArrayList < E >:该类需要import导入的包。

< E >,表示一种指定的数据类型,叫做泛型。在出现E的地方,我们使用一种引用类型将其替换即可,表示我们将存储哪种引用类型的元素。没有规定泛型,集合中的元素可以是任意类型。但是使用get()方法时,就不能确定返回类型,会出现报错。使用集合时,需要规定泛型。

基本格式:

ArrayList list = new ArrayList<>();

2.3 基本数据类型对应的引用类型

Java ArrayList和继承_第2张图片

2.4 常用API

 void add (E e)
    E remove (int index):移除掉index位置的元素
    E get(int index):获取index位置上的元素
    int size():获取长度
package ArrayList;

import java.util.ArrayList;

public class Demo01ArrayListInit {
    public static void main(String[] args) {
        //
        ArrayList list = new ArrayList();
        //打印集合对象,就是将内容打印
        System.out.println(list);// []
    }
}

2.5 代码部分

package ArrayList;

import java.util.ArrayList;

public class Demo02API {
    public static void main(String[] args) {
        //增、删、查
        ArrayList list = new ArrayList<>();
        //向集合添加元素
        list.add("yy");
        list.add("cc");
        list.add("bb");
        list.add("aa");
        list.add("dd");
        list.add("yy");
        System.out.println("添加元素:\t"+list);

        //从集合中删除元素,参数:下标
        list.remove(3);
        list.remove("yy");//删除第一次出现的元素
        System.out.println("删除第三位元素:"+list);

        //查询    查询第3个位置的元素
        String get = list.get(2);
        System.out.println("get(查询第三个位置的元素):"+get);

        //获得元素个数  ——长度
        int size = list.size();
        System.out.println("size(输出list的长度):"+size);
    }
}

Java ArrayList和继承_第3张图片

3. 继承

3.1 继承的定义

  • 继承:就是子类集成父类属性和行为,是的子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中非私有的属性和行为。
  • 所有的类, 都有唯一的父类,如果没有写父类, 说明它的父类就是 Object。
  • 子类中还可以定义自己的独特的成员变量和方法,子类的功能一定比父类要强大
  • 好处:①提高了代码的复用性。②类与类之间产生了关系,是多态的前提。

3.2 继承的特殊情况

1.子类中的成员变量和父类同名  name
   Dog d = new Dog();
   d.name -> 就是指自己定义的name,不是继承过来的name
   结论: 父子类中的成员变量不要同名
   
 2.子类中可以使用 super 引用父类对象
   
 3.创建子类对象之前, 会先创建父类对象
   加载子类之前, 会先加载父类
   
 4.构造方法: 父类的构造方法不能被子类继承的
   创建子类对象, 会先默认调用父类的无参构造器
   
    原因: 子类构造方法中, 第一行默认 super()
         可以手动调用父类其他构造方法
         
   结论: 子类构造方法中, 一定会先调用父类的构造方法
        父类中, 建议先写无参构造器
        
  5.通过子类对象调用方法时
    	先看子类中有没有定义这个方法, 若定义了, 就调用子类方法
    	子类中没有这个方法, 就调用父类继承的方法

3.3 继承的格式

通过extens关键字,可以声明一个子类继承另一个父类,定义格式如下:

class 父类 {
	……
}
class 子类 extends 父类{
	……
}

3.4 重写的应用

  • 子类可以根据需要,定义特定于自己的行为。既沿袭了父类的功能和名称,有根据子类的需要重新实现父类的方法,从而进行扩展增强。
    Java ArrayList和继承_第4张图片Java ArrayList和继承_第5张图片

3.5 super和this

  • super:代表父类的存储空间标识(可以理解为引用父亲的内容)
  • this:代表当前对象的引用(谁调用就代表谁)

注意

子类的每个构造方法中均有默认的super(),调用父类的空参构造方法。手动调用父类构造方法会覆盖默认的super()。

super()和this()都必须在构造方法的第一行,所以不能同时出现。

3.6 继承的特点

①Java只支持单继承,不支持多继承。

class C extends A{};   //正确
class C extends A,B....//错误

②Java支持多层继承(继承体系)。

class A{}
class B extends A{}
class C extends B{}

顶层父类是Object类。所有类都默认继承Object类。
③子类和父类是一种相对的概念。

3.7 抽象类

3.7.1 抽象类的概述

父类中的方法,被它的子类重写,子类各自实现的都不尽相同。那么父类的方法声明和方法主体,只要声明还有以意义,而方法主体则没有了存在的意义了。我们把没有方法主体的方法称为抽象方法。Java语法规定,包含抽象方法的类就是抽象类

  • 抽象方法:没有方法体的类。
  • 抽象类:包含抽象方法的类。

3.7.2 abstract的使用格式

使用abstract关键字修饰方法,该方法就成了抽象方法。

定义格式:

public abstract void run();

抽象类

如果抽象类包含抽象方法,那么该类必须是抽象类。
定义格式:

abstract class 类名字{

}

3.7.3 抽象类的使用

继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类。最终,必须有子类实现该父类的抽象方法,否则,从最初的父类到最终的子类都不能创建对象,失去意义。

注意事项

① 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。

② 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员变量的。

③抽象类中,不一定含抽象方法,但是有抽象方法的类必定是抽象类。

④抽象类的子类,必须重写抽象类父类中所有的抽象方法,否则编译无法通过且报错。除非该子类也是抽象类。

你可能感兴趣的:(Java ArrayList和继承)