1. Java中 抽象类(abstract class) 与 接口(interface) 的区别
抽象类在Java中是继承的关系,由于Java不支持多继承,所以一个类只能继承(extends)一个抽象类。
抽象类 和 它的派生类(继承了抽象类的类) 之间是一种“is-a”的关系,所以 抽象类 跟 它的派生类 在本质上一样的。
abstract class Door{
abstract void Open();
abstract void Close();
}
接口(interface) 跟实现接口的类之间的关系是一种“like-a”的关系,所以并不要求 接口的实现类 跟 接口在本质上一样的。
因此一个类可以 实现(implements) 多个接口,Java通过使用接口间接的实现了多继承。
interface Alarm{
void Alarm();
}
interface Color{
void Yellow();
}
一个类只能继承一个抽象类,但是可以实现多个接口
class AlarmYellowDoor extends Door implements Alarm, Color{
void Open(){...};
void Close(){...};
void Alarm(){...};
void Yellow(){...};
}
抽象类里面 变量 的默认类型为 friendly,变量可以在子类中重新定义,变量的值也可以在子类中重新赋值。
接口里面 变量 的默认类型为 public static final, 变量必须给定初始值, 接口的实现类不能重新定义接口里面的变量,也不能重新赋值。
参考自:http://dev.yesky.com/436/7581936.shtml
****************************************xuelongzr分割线****************************************
Java 的基本数据
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
1、整数:包括int,short,byte,long
2、浮点型:float,double
3、字符:char
4、布尔:boolean
基本型别 | 大小 | 最小值 | 最大值 |
boolean | ----- | ----- | ------ |
char | 16-bit | Unicode 0 | Unicode 2^16-1 |
byte | 8-bit | -128 | +127 |
short | 16-bit | -2^15 | +2^15-1 |
int | 32-bit | -2^31 | +2^31-1 |
long | 64-bit | -2^63 | +2^63-1 |
float | 32-bit | IEEE754 | IEEE754 |
double | 64-bit | IEEE754 | IEEE754 |
*********************************************************xuelongzr分割线********************************************************************
类和方法的访问权限修饰符。
以前一直以为类也有 public, protected, default, private 这四种访问权限修饰符呢,最近才猛然惊醒,类的修饰符只有以下四种:public, default(就是什么都不写), abstract, final
方法的访问修饰符有:public, protected, default, private
同一个类, 同一个包, 不同包子类, 不同的包
public Yes Yes Yes Yes
protected Yes Yes Yes No
default Yes Yes No No
private Yes No No No