java笔记总结_03_数组、继承和多态

第四章 数组
1、什么是数组
 一个数组就是一个用来存储一系列变量值的命名区域。数组也是变量,它存储的是相同数据类型的一组数据。
2、如何使用数组
 声明数组
  数据类型 数组名 [];
  数据类型 [] 数组名;
 数组定义,分配数组内存空间
  数组名 = new 数据类型 [大小];
  数据类型 [] 变量名 = new 数据类型[数组的长度]
 给数组元素赋值
  数组定义好后,数组中每个元素都有默认值
  方法一:边声明边赋值
  方法二:动态地从键盘输入信息工赋值
 处理数据
  数组排序:Arrays.sort(数组名);
  数组复制:arraycopy();
  获取数组个数:用属性length
3、多维数组
 声明:数据类型 [][] 变量名;
 定义:数组变量名 = new 数据类型[第一维数][第二维数]
    数组变量名 = new 数据类型[第一维数][]
 

第六章 继承和多态
4、继承
 继承就是将父亲的东西继承过来。
 继承要求:两者之间要有一定的层次关系,并且有可传递性,可用is-a 判断。
 继承的特点:子类继承了父类的所有属性和方法(但不包括构造方法和私有方法或属性),并且可以为自己增添新的属性和方法。Java只支持单继承。
 继承的优点:提高代码的可重用性。
 继承关键字:extends
 继承后,子类的对象可以调用父类的方法和属性,相当于子类也有了这些属性和方法
 当存在继承关系时,创建子类对象时,会先执行父类的构造方法。
5、super关键字
 只能出现在有继承关系的子类中,表示对父类对象的引用
 显示调用父类的构造方法:在子类构造方法的第一行(必须)用super可显示调用父类构造方法。
 显示调用父类的普通方法
 在子类的非静态方法中可以通过super来调用父类的属性。
 子类中调用构造方法创建对象时,首先会调用父类的构造方法对父类的属性进行初始化。如果没有显示调用父类的构造方法,则默认调用父类的默认构造方法。如果父类中已经创建了有参的显示构造方法,且又没有声明无参构造方法,此时子类中没有显示调用父类中有参的构造方法,则会在编译时报错。
6、访问修饰符
 用来修饰类、方法、成员变量
 public  公有的:一切皆可见
 private  私有有:本类可见
 protected 受保护的:对本类、所有子类和本包可见
 默认(不加任何访问修饰符时):本类、本包可见(包外的子类也不可访问)
 类只能用public 或默认访问修饰
7、方法重写
 发生在子父类之间的两个方法,重写方法出现在子类中。
 定义:子类重写方法和父类中被重写的方法具有相同的名称、返回值类型和形参列表。
 目的是:对父类的某个方法的实现不满意或不能满足要求时使用重写,同时也是为了实现多态。
 注意:方法重写不能使用比被重写方法更严格的访问权限。
 重新定义的返回值类型必须是父类同一方法返回值类型的子类型,并且无法重写static 或final 方法。
8、Object类
 它是JavaSE API中提供的一个类,全名java.lang.Object
 是所有Java类的根类
 如果一个类未明确使用extends 关键字指定父类,则默认为继承自Object类。
 Object 类的几个重要方法:toString()、 equals(Object obj)、 hashCode()
9、static关键字
 修饰成员变量、成员方法。被修饰的成员会被类的所有实例所共享。
 static修饰的成员变量通常叫静态变量或类变量,static修饰的成员方法通常叫静态方法或类方法。
 静态变量:
  类中的静态变量属于类,而不属于某个特定的对象
  类的静态成员可以与类的名称一起使用,而无须创建类的对象
  不管创建了类的多少示例,整个类中静态变量的副本就只有一个
  引用静态变量时建议使用类名来调用
  声明为static 的变量实质上就是全局变量
 静态方法:
  类的静态方法只能访问其他静态成员,不能访问非静态成员。
  类的静态方法不能使用this和super关键字。
  静态方法不能被覆盖(重写)为非静态方法。
 静态代码块:
  如果需要通过计算来初始化静态变量,可以声明一个静态块。
  静态代码块仅在该类被加载时执行一次。
  只能初始化类的静态数据成员。
10、final关键字
 final修饰符可修饰类、方法、变量。final表示不可变的。
 final类:
  final修饰的类不能被继承。
 final方法:
  final方法不能被覆盖
  一个final方法只能被实现一次
  如果一个类是final类,那么它的所有方法都final方法
 final变量:
  final变量只能被安初始化一次,其值不能修改。
  其实,final变量就是一个常量。
11、多态
 多态就是具有表现多种状态能力的特征。
 对象多态性:
  向上转型:子类实例可以直接当作父类实例使用。此时子类的特有成员不能被访问。
  向下转型:父类实例不能直接当作子类实例使用。需要强制类型转换。
  instanceof 可差别对象是属于某个类
 方法多态性:
  Java中所有非静态方法都具有多态性。
  动态绑定:
   在执行期(而不是编译期)判断变量所引用的实例的实际类型,根据其实际的类型调用其相应的方法。注意:一个父类对象不可以访问其子类新增加的成员。
  使用多态方法可以提供代码的可维护性和可扩展性。
 发生多态的条件:
  要有继承
  要有重写
  要有向上转型
  父类变量调用被子类重写的方法
12、abstract关键字
 用来修饰类和方法(不包括构造方法和静态方法)。
 被abstract 修饰的类和方法分别叫抽象类和抽象方法。抽象方法没有方法体,只有方法签名,即没有普通方法所用的“{}”。含有抽象方法的类必须是抽象类,但抽象类中的方法不一定全是抽象方法。抽象类不能被实例化,做成抽象类是为了让子类继承的,但抽象类可以定义类变量,不过只能指向已经实现抽象方法的子类。
 抽象方法必须有构造方法,因为抽象类是要被子类继承的,而继承时,子类创建对象时,首先是要调用父类的构造方法,所以,抽象类也要有构造方法,但是不可以用来创建对象。
 如果子类也不实现或不完全实现父类中的抽象方法,可以把子类也定义为abstract 的。
13、接口
 接口是特殊的抽象类,就是一套规范(功能)的说明,它没有具体的实现,也不能被实例化,具体实现要由子类实现。
 接口中的方法默认是 public abstract 的
 接口中的变量默认是 public static final 的
 一个类可以实现多个接口(implements),但必须实现接口的所有方法,否则该类必须声明为抽象类。
 一个接口可以继承自多个接口(extends),一个类可实现多个接口。
 在实现类中对于接口的变量可以直接采用 接口名.变量名 进行访问
14、抽象类和接口的区别
 属性:
  抽象类定义的属性没有任何限制,与普通类中定义的变量一样。
  接口中定义的属性是public static final 的,相当于常量。
 方法:
  抽象类定义的抽象方法需要abstract 声明,而且没有方法体。
  接口中定义的方法无需任何修饰便是public abstract 的,同样也没有方法体
 实现方式:
  抽象类中定义的抽象方法需要子类来实现
  接口中的方法通过implements 的类或继承接口的接口来实现。
 构造方法:
  接口中没有构造方法,而抽象类中有。
 类中成员设置:
  抽象类可以有抽象方法,具体实现方法、变量、常量
  接口中只存在方法的声明和常量。

 

你可能感兴趣的:(java,object,api,equals,存储,扩展)