天天看点

堆栈、构造函数、继承、多态等总结

 1.Import 用来引入其他包中你所需要的类,但不能找到没有包的类。

2.堆(Heap)和栈(Stack)的区别:(它们均由JVM虚拟机管理分配)

         堆 用来存放所有的对象,包括所有的实例变量,其空间在程序运行时分配

        栈 用来存放方法调用和局部变量

                         name  age

Student  s0 = new Student(“xiaowang”,20);

                 s0 = new Student(“wangpeng”,30);

当读到该语句时,栈中创建s0和name age并赋值name = “text”,age = 20;

new的时候堆创建实例和实例变量,并拷贝name 和 age的值,this.name =“text”,this.age = 20;

然后new中的”=”号使得s0指向创建的实例对象。当s0再new一个实例的时候原来的指向消失,指向一个新的实例,原来的实例被垃圾回收。

3. 构造函数

         构造函数在被赋值前被调用(如2中的new),主要实现对象的初始化。构造函数没有返回值,即使是void类型也会报错!子类的构造函数通过super()调用父类构造函数。如果父类中定义了带参的构造函数,则子类构造函数必须在第一行调用相应的带参super(),否则出错。构造函数可以重载但不能被继承。可以在构造方法的第一行使用this关键字调用其它(重载的)构造方法

Eg:   Class Person{

Person(int a,int b){}

Person(){

This(20,30);

}

}

4.成员变量初始化的默认值

堆栈、构造函数、继承、多态等总结

5.对象中属性和方法的可见度:

         Public: 通用

Protected: 同类,同包, 不同包中子类的方法中通过supper.(方法/属性)来访问

Default: 默认,即不写的时候。同类, 同包

Private: 只能同类中

6.方法内定义变量时:

除了final外不能使用其他的修饰符;在使用之前必须初始化,但如果没有使用可以不初始化。

7. ==与equals的区别

==用于比较两个primitive 主数据类型或者判断两个引用是否引用同一个对象

Equals主要用来比较两个字符串是否一样,返回一个boolean值;

用法:String str1 = "aa";

      String str2 = "aa";

      if(str1.equals(str2)){}

8.  继承:

Is – a  Has –a当两个类满足这两种模型时才能继承。Java不能多继承

9.重载(overload)和重写(override)的区别:

重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型

重写方法不能使用比被重写方法更严格的访问权限

不能抛出更大的异常

         重载只是参数列表不同而已,可以看成是互不相关的几个方法

10.多态(有点难)

一个引用类型变量可能指向(引用)多种不同类型的对象

§         Person p = new Student();

§         Object o = new Person();

§         o = new Student();       

一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法。School是Student类添加的属性。

§              Student m = new Student();

§              m.school = "pku";   //合法

§              Person e = new Student();

§              e.school = "pku";      //非法

11造型(对象间的强制类型转换):

从子类到父类的类型转换可以自动进行

从父类到子类的类型转换必须通过造型(强制类型转换)实现

无继承关系的引用类型间的转换是非法的

     Animal a = new Dog();                 

     Dog d = (Dog)a;                              

     //error子类也不能接收子类的实例        

     Animal a = new Animal();但这样就出错了

     Dog d = (Dog)a;

     //errorDog就只能接收Dog类型

12.其他:

         Instanceof用于判断一个实例是否是另一个类的实例。用法if(e instanceof Student)返回一个boolean值。