第一章 java介绍
1.编程的本质:
机器空间:解空间
问题空间:实际需要解决的业务问题,将该问题抽象化,在解空间中对问题建模。
编程就是建立问题空间和机器空间中的关联
面向对象编程思想:
1.万物皆为对象:将拥有相同特征的抽象为一个对象。并将对象抽象为一个变量,变量可进行存储数据并对其自身进行操作。
2.程序就是操作对象,向对象进行调用请求。
3.一个对象的属性可以由其他对象充当
4.每个对象都拥有自己的类型
5.某一特定类型的所有对象都可以进行相同的操作。
每一个对象都在内存中有唯一的地址。都拥有其自己的数据。
2.每个对象都可抽象出一个接口
一个类就是一种数据类型,他拥有自己独特的元素(属性),也有自己独特的操作方法。
接口定义了一个类能进行的操作(发出的请求,即他的方法),
3.每个对象都提供服务
当你需要解决某项问题时,就创建或调用可以实现你需求的对象,该对象为你提供接口服务(即api)
高内聚性: 每个对象仅仅完成一项工作,多个对象组合起来完成一项复杂工作。即每个对象可以组合在一起协助完成工作。
4.被隐藏的具体实现
public,private。protected,default 四种访问权限的理解
这些访问权限决定了本类和类内部的成员变量,属性,内部类,方法等是否在其他类中可见
5.组合
组合:在创建B类时,将A类(已存在)做为B类的成员变量。这样的关系就想是B中有A,就像自行车拥有轮胎一样。
优点:带来极大的灵活性。在客户端使用B类时,可以在不影响客户端使用的情况下修改A类的代码实现动态修改程序的行为。
6.继承
当两个类拥有is a关系时,在程序中,我们将这种关系可以表示为继承。例如形状和三角形,圆形,四边形等,此时形状就是他们的父类,被他们继承。
在继承关系中,子类中包含父类所有的成员变量和接口,并且可以新创建的接口。当子类在自己的类中创建与父类同名的方法,此行为称之为重写。
7.多态
当多个子类同时继承一个父类,并都重写了父类的某一个接口,那么当控制类在调用被子类都重写并参数为父类的方法时,会产生向上转型现象,程序最终会根据 子类的类型来调用各自的方法。(在这个过程中,java编译器会自动将类型进行识别)
示例:
public class FatherClass{
public static void doSaming(FatherClass father){
father.do(){}
}
public void do(){}
public static void main(String[] args){
ChildClass2 child2 = new ChildClass2();
ChildClass1 child1 = new ChildClass1();
FatherClass fa = new FatherClass ();
//在此处,本应传入fatherClass类型的参数,但是传入子类类型参数也不会报错,就是向上转型。
//在doSaming()中调用的do()被子类重写,此时程序会根据传来的子类类型自动调用相应的方法,这就是多态。
}
}
public class ChildClass1{
public void do(ChildClass1 child1){
system.out.println("child1");
}
}
public class ChildClass2{
public void do(ChildClass2 child2){
system.out.println("child2");
}
}
public class Controller{
}
8.单根继承结构:所有的java类都默认继承Object类。
9.容器:java具有满足不同需要的各种类型的容器比如List(存储序列),Map(关联数组),set(每种对象类型只有一个),以及堆,栈,树,队列等。具体的使用根据情况确定。
10.参数化类型:即泛型,通过使用泛型,编译器可以定制一个只接纳和取出泛型对应类型的对象。
11. 对象的创建和生命周期:java采用动态内存分配方式,使用new的方式创建新对象,并将新的对象放在名为堆的容器中。创建的对象实际上是指向堆内对象的引用(物理地址)。当该对象不再使用时,java垃圾回收机制会将其销毁。
12.异常处理:java内置了异常处理,并强制使用。
13.并发编程:线程是为某一单一任务分配执行时间的手段。
14.java和internet
①web:客户/服务端系统,服务端是一个中央信息存储池,负责存储数据,客户端则根据需要向服务端发送请求,并获取服务端返回的数据。在此过程中会牵扯到
事务处理等事件。而web就是一个巨型的客户/服务端系统,但是它将客户和服务端都放在同一个网络中。
②客户端编程:客户端编程能是web浏览器完成其能完成的所有工作,使浏览器的响应及处理边的更快。
(1)插件:
(2)javaScript语言
(3)java applet是在web浏览器中运行的小程序
(4)其他备选方案
(5).net:类似于java jvm
(6)internet和intarnet
③服务器编程:java编写servlet的程序来实现服务器编程。
15.本节内容仅作为介绍java所涵盖的范围,具体知识点我会继续学习,并在之后的文章中分享,感兴趣的朋友若是发现那里有问题或者错误,感谢指正。