final关键字
修饰类: 修饰后的类不能被继承, final不能修饰抽象类,接口。
修饰方法: 修饰的方法不能被子类重写,不能修饰抽象方法。
修饰属性: final修饰的属性是常量,值不可以改变,必须要初始化赋值。
在声明时同时赋值,往往与static一起使用。在整个内存中只有一份 static final int num = 10;
在定义时,没有为常量赋值,那么必须在构造方法中赋值,在每个对象中都可以拥有一个常量
final int count;
public FinalDemo(int count) { this.count = count; }
接口
java中一个类只能有一个父类,所以用接口可以实现多继承的逻辑 。
从本质上讲,接口是一种特殊的抽象类,这种抽象类中包含抽象方法。
接口的定义:
[访问修饰符] interface 接口名称 [extends 其他的接口名1,….其他的接口名n]
{
// 声明常量 抽象方法 静态方法 默认方法
//接口中定义的属性默认是静态常量;public static final类型
//抽象方法是:public abstract
//jdk8之后添加了静态方法,接口可直接调用
//jdk8之后添加了默认方法,是让子类重写,或者让子类调用的
}
接口的使用:类使用implements关键字实现接口。在类声明中,Implements关键字放在class
声明后面。
[访问修饰符] class 类名 implements 接口名1,接口名2……{ }
接口的继承:
[访问修饰符] class 类名 extends 父类名 implements 接口名1,接口名2……{ }
接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字
接口不是被类继承了,而是要被类实现
接口不能实例化对象,无构造方法 (区分类)
一个类可以实现多个接口 (使用implements)
接口与实现类之间存在多态性
一个接口能继承其它多个接口(但是一个类只能继承一个父类)
当类实现接口的时候,类要实现接口中所有的抽象方法。否则,类必须声明为抽象的类
接口:
不能有构造方法
不能有成员变量
不能有成员方法 只有静态方法,默认方法
抽象类:
能有构造方法
能有成员变量
数组
概念:数组是相同数据类型元素的集合
数组是对象, 里面可以有指定长度个连续空间
创建时必须指定长度,数组的长度一旦定义,就不能改变
int [] a;
int 指的是数组对象中可以存储的数据类型是int类型
[] 表示时数组
a 就是数组对象的引用
数组的声明的两种方式:
• 数据类型 [] 数组名字 例如:int [] a;
• 数据类型 数组的名字 [] 例如: int a [];
//int [] a,x;两个数组a,x
//int b [],y;一个数组b,一个int型的变量
数组的创建:
●声明数组的同时,根据指定的长度分配内存,但数组中元素值都为默认的初始化值 int[] ary0
= new int[10]; (动态)
● 声明数组并分配内存,同时将其初始化 int[] ary1 = new int[]{1, 2, 3, 4, 5}; (静态)
● 与前一种方式相同,仅仅只是语法相对简略 int[] ary2 = {1, 2, 3, 4, 5};
数组的两种循环:
第一种:for (int i = 0; i< c.length; i++)
{
System.out.println(c[i]);
}
第二种:
/* c 需要遍历的数组
int t 声明类了一个变量
每次会从数组c中,取出一个元素赋给临时变量t
*/
for(int t : c)
{
System.out.println(t);
}