Java中 的package语句必须作为ava源文件的第一条语句。
面向对象的三大基本特征:继承、封装、多态。
类的访问控制符
默认:仅可被同包的其他的代码访问。
public:可以被任何代码访问。
类成员的访问控制符
public 同一个类 同一个包中 不同包中的子类 不同包中的非子类
default 同一个类中 同一个包中
protected 同一个类中 同一个包中 不同包中的子类
public 同一个类中 同一个包中 不同包中的子类 不同包中的非子类
继承是能自动传播代码和重用代码的有力工具,继承是单方向的。
java 是单继承的,所以在extends后面只能是一个名字。
对于构造方法来说,子类继承不了,只能调用。
通过super关键字可以在子类构造方法中显示调用父类的构造方法,该调用必须位于子类构造方法的第一行。
方法覆盖:两个方法的方法名、参数列表必须完全一致(子类重写父类的方法)。
子类方法的访问级别不能低于父类相应的方法级别。
如果没有无参的父类的构造方法,子类必须使用super显示的调用父类的构造方法。而且必须是在子类构造器的第一句。
this引用对象自身,调用自己的构造方法,而super调用父类定义的成员变量、方法或构造方法,super不能当做引用传递给其他的调用而this可以。
java中多态指不同类的对象对同一消息做出相应。
java中,除了final、static、private、构造方法是静态绑定,其他的方法全部为动态绑定。
运算符instanceof是用来判断是否属于某个类的实力
对象 instanceof 类
在多态的环境中,父类的引用可以指向子类的对象,子类的引用不能指向父类的对象。
类的成员变量都是静态绑定的,也就是说,类中声明的成员变量不能被子类中的同名属性覆盖,通过该类的引用调用成员,始终调用该类自身声明的属性。
java的抽象就是知识声明行为接口而不是完成具体的实现
抽象类不能直接实例化,只可以用来继承作为其他类的父类的存在。
构造方法和final、static不可以修饰为abstract。
抽象方法必须位于抽象类中。
常量在声明时必须初始化,声明之后不能对其进行二次赋值,其后任何试图对常量进行赋值的语句都将报错。
final修饰方法,则表示该方法不能被子类覆盖,final和abstract不能同时修饰一个方法。
static成员存放在方法去中,每个对象相应static共享一段内存。
静态成员方法没有this引用。
static方法只能操作方法自身的局部变量或类的static成员。
public class HumanStatic {
public static String population="灵长目";
public static void setPopulation(String newPopulation){
population=newPopulation;
}
public static void main(String[] args) {
HumanStatic.setPopulation("灵长目,类人猿");
System.out.println(HumanStatic.population);
}
}
实例方法中可以直接访问static成员变量而static方法中不能直接访问static的成员变量。
static方法由于不和任何对象绑定,因此不能访问this。
一个类可以同时继承一个父类并实现若干接口。
不允许类多继承的主要原因是:如果A同时继承B和C,而B和C同时有一个D方法无法确定该继承那一个。