深入面向对象

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方法无法确定该继承那一个。

 

 

 

 

 

 

 

posted on 2019-03-25 20:06  小白qqqqq  阅读(295)  评论(0编辑  收藏  举报