• 面向对象思想2【笔记】


    面向对象思想

    PS:类似于这种list<T.>,请将最后的.给去除掉

    继承

    继承的关系就是一种is-a的关系

    子类增加或修改基类(增加成员变量,函数)

    java中所有函数都相当于c++中的虚函数

    封装

    默认也称package private

    尽量只使用private和public

    派生类中修改封装可见性

    比如private改成public或者是public变成private,这是不建议使用的

    不可变性

    不可变对象 immutable objects

    可以引用传递,可以缓存

    线程安全

    final关键字的使用

    在类申明中,类不可以被继承

    函数申明,函数不可以在派生类中重写

    变量申明,变量不可以指向其他对象

    Static final变量,用于定义变量,名称一般大写

    实现不可变性

    使用final关键字无法保证不可变性

    从接口定义,类的实现上保证不可变性

    泛型

    以list为例,有很多种类型

    一般来说,类型很多的话,可能就是建错了

    从list到list<T.>

    规定list中的元素只能是类型T

    ArrayList<integer.>,ArrayList<string.>

    Linkedlist<integer.>,linkedlist<string.>

    虽然规定了只能是类型T,但是在实现的时候无所谓T是什么类型,但是要告诉T到底是什么类型,然后保证其中的元素的类型,这就是泛型的情况

    语法方面


    Java type erasure

    早期java是没有泛型的

    为了兼容性,在运行的时候会将所有的泛型内容erase,泛型单纯就是给编译器看的

    运行的时候,list,list<string.>,list<integer.>,这三个是没有区别的

    运行的时候怎么知道泛型的类型?

    比如有

    不清楚的话可以换一个方法

    删掉了以后编译器可以保证,那么编译器是怎么保证的,这里有一个概念covariance,是有一些反直觉的

    ArrayList<integer.>是list<integer.>吗?答案是,是的

    那么list<integer.>是list<object.>吗?答案是,不是的

    将list<integer.>转换成list<object.>的方法

    第一个,new ArrayList<object.>(intlist)

    第二个,强制转换,很危险可能会丢失数据,但是也可以,所以要先想想为什么要转换

    泛型中对于c++的虚函数表(没有类型,就是一内存块)

    java开发者来说,是理解面向对象的具体实现

    对于c++开发来说,虚函数表是很重要的

    对于c++和java来说,可以理解这两种设计语言的不同之处

    例如


    End

    感谢观看,文笔有限,博客不出彩,还请多多见谅
  • 相关阅读:
    Java中的24种设计模式与7大原则
    Red Hat Enterprise Linux 6安装步骤
    jquery之获取当前时间和月份加1
    新手看过来:随车千斤顶怎么用?
    空挡滑行和带挡滑行究竟谁省油 误区要知道
    怎么开手动档轿车?这么开让你再也不想开自动档
    FindBugs插件的安装与使用
    图解Eclipse中安装和使用FindBugs
    新手开车上高速 不懂这些安全细节非常危险
    酒桌游戏
  • 原文地址:https://www.cnblogs.com/jokingremarks/p/14474075.html
Copyright © 2020-2023  润新知