面向对象与继承以及重写

面向对象:

类:包含成员变量,成员方法,静态方法,静态成员方法,构造方法,静态代码块,代码块。

成员变量与成员方法:在使用之前必须创建对象,用对象来调用成员变量或成员方法。

静态成员变量与静态方法:可以直接通过类来调用。

 

Math:java.lang

static double random():0.0~1.0;

static double pow(double a,double b);

static int abs(int a);//绝对值;

double ceil(double);//向上取整;

double floor(double);//向下取整;

double round(double);四舍五入;

double sqrt(double);//开方;

 

ArrayList - 类,用来存储数据,可变成数组->集合

所属软件包:java.util

数组长度不可变,数组如果要扩容,需要用到数组的复制。

为了解决数组长度不可变的问题,可以实现数组长度动态化。

int[] Student[] int[][] Room[][]

ArrayList 仅支持引用类型

1.构造方法

空参构造器:没有内容的空的合集。

ArrayList<E> arrList = new ArrayList<E>()

<E>:泛型,可以所有的引用类型,规定集中元素类型的。

基本数据类型都有对应的引用类型

int->Integer

char->Charater

byte -> Byte

boolean -> Boolean

double -> Double

2.常用API
  void add(E e)
   E remove(int index): 移除掉index位置的元素, 并返回
   E get(int index)
   int size()
3.<E>: 泛型, 规定集合中元素的类型
   没有规定泛型, 集合中的元素可以是任意类型
   所以使用get()之类的方法时, 就不能确定返回值类型
   所以, 使用集合时, 需要规定泛型

继承: extends
    1.概念:子类/衍生类/扩展类: Dog
          父类/基类: Animal
    2.子类继承父类, 就继承了父类所有的成员变量和方法
    3.所有的类, 都有唯一的父类,
      如果没有写父类, 说明父类就是 Object
    4.子类中还可以定义自己的独特的成员变量和方法
      子类的功能一定比父类要强大

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

方法的重写\覆盖:
 子类中定义的方法, 方法返回值类型\方法名\参数列表
 都和父类中定义的方法完全一致

重写Override和重载Overload的区别


abstract: - 抽象的
抽象方法: 方法没有方法体
        一个类中, 存在抽象方法, 那么这个类就必须也是abstract
抽象类: 用abstract修饰的类
       抽象类不能直接new对象
       有构造方法, 为了给子类使用
       抽象类的非抽象子类, 必须实现/重写抽象类的所有抽象方法
判断:
  1.有抽象方法的类叫抽象类    √
  2.抽象类就是有抽象方法的类  ×
  3.抽象类中可以没有抽象方法  √

 

面向对象与继承以及重写

面向对象与继承以及重写

面向对象与继承以及重写

面向对象与继承以及重写

 

面向对象与继承以及重写

面向对象与继承以及重写