面向过程的程序设计:需要考虑具体的每一步的实现过程。
面向对象的程序语言设计:需要考虑一是:类与对象之间的关系;二是类的具体属性和方法;三是类与类之间的属性和方法。
注意在java中,完事万物皆对象;(Everything is Object)。
要先定义类,才能有类实例化生成对象。
类是同类对象的抽象集合。
对象可以看成属性和方法的封装体。
成员变量=属性 方法=函数。
类是又属性和方法组成。
成员变量与局部变量的区别:成员变量不用初始化就可以使用,因为他有默认的初始值,成员变量的作范围是整个这个类的类体。
而局部变量只有初始化后才能使用,局部变量的作用域是整个方法体。
引用:不进行初始化就是“null”;(注意字内存中,引用类型占两块内存,而基本类型只占一块内存)。
引用在内存中的分析:
引用相当于一个局部变量。
String s;通过执行这条语句会在内存中声明出来两块空间,给s 引用分配一个空间,给s指向的对象分配一个空间,这个空间目前的值为null;
s = new String("hello world");执行后,s指向的对象的值是“hello world”(注意在java中所有通过关键字 new出来的对象都在 heap上存放,在访问这个对象时,我们不能直接访问这个 new的对象,而是通过这个对象的引用s 去访问这个对象);
类是一个静态的概念,存放在代码区(code segment);
new 对象存放在堆内存(heap);(动态存放)
字符串常量和讲静态类型的常量,存放在数据区(data segment);
局部变量存放在栈内存(stack);
构造方法的作用是:和new 关键字 一起创建一个新对象。
方法调用完之后,在stack中给实参分配的内存自动消失。
两个方法有没有有没有构成重载,主要看编译器能不能区分这两个方法。
当一个参数不能确定指的是哪一个变量的时候,可以按照就近原则。
在静态的方法中不能访问非静态的成员变量。只有通过
类的引用调用调用该成员变量。
如果你要把一个类放在包里面,编译后的class文件放在正确的目录下。所对应的目录和报名顺序必须一致。
如果你想在另一个类下用这个打包的类,必须把它的包名写完整。
执行一个类需要写全包名。
找任何类找不到 class文件,需要看classPath.
jar -cvf test.jar *.*(对目录下的所有文件进行打包)
多态存在的必要条件:
1 要有继承:
2 要有重写:
3 父类的引用指向子类对象。
抽象类是用来被继承的,不能被实例化,抽象方法是用来重写的,只需声明,没必要实现。
final 的常量值不能被改变:
final的方法不能被重写;
final的类不能被继承;
在接口中,一个成员变量只能是public static final的。
一个接口中的方法只能是抽象的。