构造方法的特征及调用?
三个特征:
1) 方法名与类名相同。
2)可以定义多个参数列表不同的构造函数,若未定义默认插入无参构造函数。
3)没有返回值(不需要用void修饰),可以使用return关键字,作为方法结束标识(一般不使用)。
调用注意:
1)子类不能继承父类的构造方法,且只调用默认构造方法,即无参构造方法。当声明了有参构造方法后,未显式声明无参构造方法会导致子类调用父类方法初始化出错。
2)在创建对象时,先调用父类默认构造函数对对象进行初始化,然后调用子类自身自己定义的构造函数。
3)子类调用有参的构造方法必须通过super调用。
4)子类必须调用父类的构造函数。可以通过系统自动调用父类的默认构造函数,如果父类没有默认构造函数时,子类构造函数必须通过super调用父类的构造函数。
class Father {
Father(){
System.out.println("调用父类无参构造函数!");
}
Father(int i)
{
System.out.println("调用父类有参构造函数!");
}
}
class Son extends Father{
Son(){
System.out.println("调用子类无参构造函数!");
}
Son(int i){
//super(i);
System.out.println("调用子类有参构造函数!");
}
}
class main_test{
public static void main(String[] args) {
int i = 1;
Son s1 = new Son();
Son s2 = new Son(i);
}
}
/*-------------运行结果-----------*/
/*
调用父类无参构造函数!
调用子类无参构造函数!
调用父类无参构造函数!
调用子类有参构造函数!
*/
静态成员与静态成员函数
static关键字修饰的类的成员变量与成员方法。静态成员方法是保存在堆区的,而普通变量是由保存在栈区的。
外部访问:外部访问静态成员与静态变量可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而访问非静态的只能用"对象名.方法名"的方式。
内部访问:静态成员方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则可以访问所有成员与方法,包括static的成员。
java接口和抽象类的区别。
接口:是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
抽象类:使用了关键词abstract声明的类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。“抽象方法”,属于一种不完整的方法,只含有一个声明,没有方法主体。
接口 | 抽象类 |
所有方法只能且默认(隐式声明)为抽象方法 | 可以拥有抽象方法和普通方法 |
所有属性都是由public static final修饰,必须显式赋值 | 可以定义所有属类型性 |
不包含构造方法 | 可以包含构造方法 |
不能被实例化,被实现后需实现所有方法(除非继承类是接口) | 只能被继承,继承必须实现抽象方法(除非继承类是抽象类) |
线程,进程,程序的基本概念(来自搜狗百科)
线程:是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是行程中的实际运作单位。(也是CPU调度分配的单位)
进程:计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
程序:是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。