博客内容仅作学习交流之用,详细内容参见网络资源,欢迎大家交流探讨!
计算机语言发展向接近人的思维方式演化:
汇编语言
C语言
C++
java
AOP
代码感与程序内存思想
1.类的定义
package 包名;
class 类名 extends 父类 implements 接口名 {
}
2.类的创建:先声明再创建;或一步到位。
3.java垃圾自动回收机制,C++程序员需要在各自的函数内自行编写代码回收占用内存。
4.java函数运行原理,开辟栈空间。函数重载,函数参数列表需要有区别。减少中间变量,避免函数啰嗦。
5.函数的声明,没有函数定义中的函数体。
6.this,指对象的...是属于一个对象的为不是类的,只能在类定义中使用。
7.类变量,是该类的所有对象共享的变量,静态变量static,可被该类下的所有对象使用。访问:类名.类变量名,对象名.类变量名。
8.类方法,是该类的所有对象共享的方法,静态区域块,只执行一次,在创建类时,写入代码区。java中的规则,类变量原则上用类方法访问,类方法中不能访问非静态变量/非类变量。反之可以,即普通的成员方法可以访问静态变量。
9.方法重载与覆盖
①方法重载(overload)
②方法覆盖/重写(override)
10.包(package):区分相同名字的类;方便管理类;访问范围的控制。打包命令,文件开头:package包名。常用包:java.lang.*(自动导入),引入包命令:import 包名。
11.java面向对象编程的特征:
③继承:代码复用,编程靠近人类的思维。
子类(派生类)不再重新定义父类中的某些属性或者方法,public,protected可以被继承,private不可被继承。形式:class子类 extends 父类,层次关系。
12.抽象类、抽象方法:abstract,解决父类方法的不确定性。在子类中必须实现父类的抽象部分,抽象方法无实现方法的函数体。抽象类不能被实例化,因为其中有为确定的因素(或者编译器只认类名前得abstract关键字)。抽象类可以不包含抽象方法,可以包含有函数主体的方法,但包含抽象方法的类必须是抽象类。
13.接口(interface),就是给出了一些没有内容的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来。类在实现(implememts)接口时需要实现接口中的所有方法。和类得继承情况类似,接口可以引用实现了该接口的类的对象。其体现了程序设计多态和高内聚低耦合的设计思想。不破坏继承关系,扩展了类的属性和行为。
14.前期绑定:编译时就可以确定数据的类型,static,final;
后期绑定:程序执行时才可以确定数据的类型,即动态绑定是指在执行期间(非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法,在子类中调用父类的方法。
15.final修饰方法,表示该方法不可(被子类)修改/覆盖;修饰变量,不可被修改(常量,必须赋初值);修饰类,不可被继承。
16.对象克隆,在Object类中定义了一个clone方法,它创建并返回一个对象的副本,在类得使用语句是:super.clone();但是其得到的是一个Object类,需要进行类型转换,而且在使用时还需要实现Cloneable接口,并把clone方法定义为public。浅克隆问题,clone是Object类提供的方法,Object并不知道具体类实现细节,它只是按照字段进行拷贝,对于可变对象,其获得的只是对象的地址,所以原对象和克隆出来的对象中存放的地址依然指向了同一块内存。虽然String作为类(对象)出现,但是由于String的不可变性,可隆时String不会产生浅克隆问题。
Object中的equals()方法,当且仅当两个对象指向同一个对象(内存地址?)的时候才会返回真值。
17.内部类,定义在宿主类内部,指能由宿主类使用,可以控制类的可见性。分为静态内部类和非静态内部类。
非静态内部类可以调用其宿主类得所有变量和方法,并且像宿主类得其他非静态成员那样直接访问。静态内部类时用static修饰的类,静态内部类不能直接访问其宿主类得成员,而必须经过对象来访问。
/**
*站在巨人的肩上才能看得更远,一步一个脚印才能走的更远。分享成长,交流进步,转载请注明出处!
*/