java——与c++比较之不同——类
来源:互联网 发布:软件开发速成 编辑:程序博客网 时间:2024/06/14 01:01
访问权限
类成员访问权限
- 默认访问权限为package,可以被同一package内类访问
- protected可以被同一package内类访问,因此protected=package+跨package继承类
- 访问权限大小:public>protected>package>private
- 继承方式为public继承
类自身访问权限
- public:可以被package外的类访问和继承
- package:只能被package内的类访问继承(默认)
总结
- 类成员访问权限=min(类成员访问权限, 类自身访问权限),因此package类成员的public权限和protected权限意义不大,package权限就足够了
类static成员
static修饰类成员,与c++中static修饰类成员类似
- static修饰数据成员可以理解为java定义的寄存于类作用域下的外部对象定义
- static修饰方法成员可以理解为java定义的寄存于类作用域下的外部函数定义
注:c++中static修饰的是数据成员的声明,方法成员的声明或定义
类
- class加载顺序,基类(数据成员类->当前类)->继承类(数据成员类->当前类)
- static数据成员不属于类对象,static数据成员于对应class加载时初始化,因此static数据成员初始化顺序与class加载顺序一致,只初始化一次
- java构造函数功能单一,不含初始化列表,初始化列表散落在数据成员定义处
- java初始化列表散落在数据成员定义处,因此数据成员初始化先于构造函数调用
- 在性能和安全性之间,java选择了安全性,java数据成员含默认初始化值0(引用类型为null)
- java构造函数不含初始化列表,所以java构造函数与普通函数无本质区别,构造函数可相互调用,但不可递归调用
- 调用基类构造函数用super,调用本类构造函数用this
- java对构造函数调用做了限制,构造函数调用语句只能放在主调构造函数首行
- 调用基类构造函数必须显式调用,放在首行,如果调用的是基类默认构造函数,可以omit
- java只有heap对象,没有stack对象,只能通过引用间接访问对象,不可直接访问对象,因此java无复制构造函数,也无赋值操作符函数
- java通过GC机制管理对象内存,因此java无析构函数
- java只支持单根继承
- java方法默认都是runtime bind,因此编译期无法确认方法是否被调用,为了安全性考虑,避免runtime crash,方法必须实现(abstract方法和interface方法除外)
- 覆写方法时,继承类的访问权限不能比基类小(public>protected>package>private)
0 0
- java——与c比较之不同(三)
- java——与c比较之不同——基本类型
- java——与c比较之不同——指针 引用 struct union 数组
- java——与c++比较之不同——类
- cpp——与c比较之不同——函数 static const
- java——与c++之不同——类
- cpp——与c之不同——enum
- cpp——与c之不同——指针
- cpp——与c之不同——函数
- cpp——与c之不同——初始化
- C++与C不同之二——引用
- java——与c++之不同——其他
- Java与C/C++比较——对象引用方面
- const——c与c++不同
- C与指针——与谭浩强不同的C
- Android中的java基础(二)——装箱与拆箱及不同基本类型的比较(类型转换)
- cpp——与c之不同——内置类型
- cpp——与c之不同——数组 字符串
- jquery购物车数量加减
- 淘宝网络库tbnet安装小记
- 如何用十条命令在一分钟内检查Linux服务器性能
- MongoDB复制集环境搭建
- SQL Server2012安装过程中提示需要更新的以前的VS2010的实例
- java——与c++比较之不同——类
- SQL 语句转换格式函数Cast、Convert
- [翻译]HyperLedger下一代共识架构提案
- 黑客季昕华——从技术宅到创业英雄的五个故事
- Python Pandas找到缺失值的位置
- 1.5_Android Training 学习笔记_Fragment
- FTP文件的上传和下载---org.apache.commons.net.ftp.FTPClient
- Eclipse svn报文件夹 "" 已不存在 [转载]
- Hyperleger源码分析--共识算法