Java放弃之旅(一)-Thinking in Java

Java Road

Part1
Java的设计思想(OOP面向对象编程)百度一下

1.OOP特性

  • 万物皆为对象
  • 程序是对象的集合,他们通过发送消息来告诉彼此要想做的
  • 每个对象都有自己的有其他对象构成的存储
  • 每个对象都有其类型(每个对象都是某个类的一个实例instance)
  • 某一特定类型ed所有对象都能接受同样的消息

2.接口与对象
通常在描述类时使用UMLUnified Modelling Language)图来进行表示,上部代表了类名,中部可以是数据成员,底部通常为方法(一般只写公共的方法)
在这里插入图片描述
接口确定对某一对象所能发出的请求,你需要做的事情就是:

  • 创建Light类
  • 定义这个对象的引用
  • 向对象发送消息
Light It=new Light();
It.on();

3.设计中的边缘控制(针对于客户端程序员与类库创建者)

  • 让客户端程序员无法触及他们不应该触及的地方
  • 让类库程序员可以改变类内部的工作方式而不影响到客户端程序员

边界设定的标识符:
(1)protect:类型额创建者和类型内部创建的方法以及继承的类可以访问
(2)private:类型额创建者和类型内部创建的方法之外的不能访问
(3)public:对任何人可用
(4)默认访问权限:当不使用前面三种标识符时,即可发挥作用。该权限被称为 包访问权限,可以访问在一个包中的其它类成员,但是在包之外,如同private一样,不可被访问
4.伴随多态的可互换对象

  • 泛化操作
  • 编译器不能产生传统意义上的函数调用。在非面向对象程序设计中,函数的调用会产生前期绑定,即产生一个对具体函数的调用,运行时将调用解析到要被执行的代码的绝对地址。由此,在OOP中,直到运行时才知道代码的地址。OOP中采用的是后期绑定,为了达到后期绑定,Java中引入一段代码来取代绝对地址的调用,这段代码是用储存在对象中的信息来确定方法体的地址。C++若要使用后期绑定的灵活性需要用到virtual关键字;而在Java中,动态绑定是默认,可直接使用多态。
void dosomething(Shape shape){
	shape.erase();
	//...
	shape.draw();
	//...
}
Circle circle=new Circle();
Triangle trianle=new Triangle();
Line line new Line();
dosomthing(circle);
dosomthing(triangle);
dosomthing(line);

dosomething()可以传达给Shape任何消息,它的子类也能接受到,这是因为向上转型(upcasting)

向上转型图示
5.单根继承结构
Java中所有的类都继承自Object这个终极基类,因此,Java可以方便的实现垃圾回收机制:所有的对象都保证其有类型信息,不会因此陷入僵局。
6.可以引用多个对象的对象类型-容器
一、不同容器提供了不同的接口与外部行为;
二、不同容器对于某些操作具有不同的效率;
7.参数化类型
可以储存Object类型的容器可以储存任何东西。要使用这类容器,要在其中置入对象的引用。由于Java中采用的单根继承,在置入这些对象的引用时,这些对象丢失其身份,都将转化为Object对象的引用。当取回时,就是取回这些Object对象的引用。
如果要将Object引用转化为原先的身份,需要使用到向下转型,向上转型是安全的,向下转型是不安全的

  • 向下转型并不是彻底危险的,如若向下转型为错误类型,会有异常提醒
  • 为了解决向下转型的问题,使用参数化类型机制,它是一个编译器可以自动定制作用于特定类型上的类
  • 向下转型和运行时的检查需要耗费额外的时间
  • 表示方法为一对尖括号,括号中是类型信息
ArrayList<Shape> shapes=new ArrayList<Shape>();

8.控制对象的生命周期

  • C++采用效率控制,给予程序员选择的权利:对象的存储空间和生命周期在编写程序时确定,将对象置于堆栈(自动变量区或限域变量)、静态存储区域
  • 在堆(heap)的内存池中动态的创建对象。Java完全采用了动态内存分配方式,在创建新对象的动态实例时,需要用到new关键字。采用堆时,不知道对象的生命周期,使用C++语言时可能会产生内存泄漏,Java提供了”垃圾回收器”机制,知道对象何时不会被使用,并自动释放对象所占用的内存。

(哦,我亲爱的秃头兄弟,今天你有好好使用洗发水了么)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值