(第一天)
1,编程思想
- :面向对象编程-->强调的是对象,通过对象调用类中或者接口中的方法完成功能。
- :面向过程编程-->强调的是过程,按照具体步骤完成某项功能。
- 类和对象
- :类是拥有共同属性或者行为的事务统称,是一种抽象的概念,除了提供一种模板外描述一类事务外,没有具体的作用,其中属性一般定义为成员变量,行为定义为方法。
- :对象是一个具体存在的实例,是看得见摸得着的,因为对象是类的实例,所以可以通过对象去调用类中的属性和行为。
- 内存图的加载顺序
- ,程序运行都是先从主方法先运行的,所以测试类先准备加载。
- 当测试类加载的时候,会加载main 方法。
- 这个时候如果方法中有创建对象的话,就会加载进去。因为编译看左边,运行看右边。
- 所以会先把对象所在的类先加载到方法区。
- 然后再把new出来的类对象加载到堆内存。(加载进堆内存的方法不会加载方法体,只会加载方法所在方法区的地址值)。
- 然后就开始通过构造方法赋值(牵扯到隐式三步)
注意:当有多个对象指向同一个地址时,一个对象修改了地址内存中的数据后,别的对象获取到的也是修改后的。比如 A a=new A(i:10,o:9); A b=a ; 那么对象b和a指向的同一个地址值,后面如果b修改了数据,那么后面重新用a获取到的数据也变了。。
- 局部位置和成员位置
- :局部位置:类中,方法中;里面的变量叫做局部变量,必须要先赋值再使用(因为方法内部没有构造方法,所以加载后不会有初始化过程,不赋值就会报错);
- :成员位置:类中,方法外。变量叫做成员变量,方法叫做成员方法。
- JAVAbean标准类:
是java编程中的一种规范
- :要求类必须是用public修饰,不然不方便创建对象
- :要用private私有化成员变量(为了安全起见,如果需要对某些数据筛选就可以在set方法里面家判断)
- :必须要有无参构造方法(推荐有参构造方法)
- :提供get 和set方法
(第二天)
- 匿名对象: 没有名字的对象,因为没有用对象名接收其地址,所以只能用一次。用完要创建。优点:写法简单,不用创建对象。缺点;只能用一次。
- 继承: 子类继承父类的属性和方法,子类就不需要定义而可以直接使用了,节约了代码。对于类来说,继承是单继承,多层继承,不支持多继承,要满足is a 的关系。(但是可以实现多个接口),私有化的成员变量可以继承,但是不可以直接访问。子类访问非私有化成员方法时,优先在子类找(可以联系后面的多态时访问非静态方法的规则和重写后的访问规则);
- 模板化思想:将共同的属性和行为抽取出来,作为一个类,把不确定的方法定为抽象方法,由子类按照子类的具体要求而填充重写。这相当于定义了一种规范的思维,使用者只要关心自己需要实现的功能就可以了!!
- static 可以修饰成员方法 成员变量 代码块,修饰的变量叫做类变量,修饰的方法叫做类方法,在类加载的时候加载运行了,可以通过 类名.变量名 或者 类名.方法名 调用。
所以,工具类中的方法多半是用static修饰,因为调用方便。注意:静态方法不参与重写,并且里面不含有this
类变量存在静态常量池,被全局共享,所以可以作为共享变量。
运行顺序:
静态代码块>main方法>构造代码块(隐式三步)>构造方法
第(三)天
- 接口:是一种方法的集合,是一种规范。接口之间支持多继承,多实现。。。先继承后实现。
- 多态:多态的前提 父类类型或者父接口类型指向子类对象 有继承 方法重写
- 多态时的成员访问特点: 除了非静态成员方法(就像面向对象类似,看子类),其余的都是编译运行都看父类。
总结: 本想后面写的再细点,结果发现这就是一个整体,后面的内容基本上就是前面内容的结合体!!