1、栈内存存放的是对象的引用(名字)堆内存存放的是对象本体
2、函数的重载:a、两个或者多个函数在同一个类当中
b、函数名相同
c、参数列表不同
3、构造函数:a、没有返回值类型的定义
b、名字必须和类名相同
c、如果没写构造函数,则编译器会自动加上一个参数为空,方法体也为空的构造函数
d、调用方法为A a = new A();作用是生成A类的对象
e、构造函数可以被重载
f、可以自己编写构造函数,给成员变量赋初值
4、this(); 表示调用本类中的另外一个构造函数,具体取决于括号里面的参数类型和个数。如果要采用这种方法,则this(); 这行代码必须是第一个语句
5、静态成员变量和静态函数可以只用类名来调用;所有的对象使用的静态成员变量是同一份;静态函数中不能使用this,不能直接引用非静态的成员变量
6、静态代码块:static { } 其会在装载类的时候调用,主要作用是为静态变量赋初值
7、面向对象有三个最重要的特征:继承、封装、多态
8、Java只支持单继承:一个子类只允许有一个父类。C++里可以有多继承
9、继承父类只能继承成员变量和成员函数,不能继承构造函数
10、在子类的构造函数当中,必须调用父类的构造函数;如果没有明确的调用父类的构造函数的话,编译器会自动加上一段代码:super(); ,含义就是调用父类的构造函数,具
体调用哪一个构造函数是根据括号里所传递的参数而决定的,同时这行代码也必须是第一个语句
11、函数的复写(override):在具有父子关系的两个类中;父类和子类存在定义(函数返回值类型、函数名、参数列表)完全相同的两个函数
12、super.A();代表调用父类的A方法,而this.A(); 代表调用本类的A方法
13、向上转型:将子类的对象赋值给父类的引用
14、一个引用能够调用哪些成员(变量和函数),取决与这个引用的类型;一个引用调用的是哪一个方法/变量,取决与这个引用所指向的对象
15、向下转型:将父类的对象赋值给子类的引用;前提是先把一个对象向上转型:Person p = new Student();
Student s = (Student)p;
16、抽象函数:只有函数的定义,没有函数体:abstract void fun(); (注意分号)
17、使用abstract定义的类被称为抽象类,其具有以下特点:a、抽象类不能够生成对象
b、如果一个类里面包含有抽象函数,那么这个类也必须被声明为抽象类
c、如果一个类里面没有包含抽象函数,这个类也可以被声明为抽象类
18、抽象类是用来被继承的,它的子类通过复写父类里面的抽象函数,从而达到可以生成对象的目的
19、虽然抽象类不能生成对象,但却可以有构造函数(其是用于生成类的对象的),是通过其子类的构造函数调用的(参照本文第10条)