Java面向对象程序设计--与C++对比说明:系列2(类机制)
1. Java中的包机制(Package):
1.1 Java容许将一系列的类组合到一个叫package的集合中。package机制是一种非常好的管理工作的方式并可以将你自己的工作和系统或第三方提供的代码分开。
一个类(class)可以使用其本身所在包中的任何类和其他包中的任何public类。
注意:只能使用*号来导入一个单独的包中的所有的类。像这种java.*或java.*.*形式的包的导入都是错误的。
例如:有两个包com.a.b和com.a.b.c,那么com.a.b.*导入的类将不包括com.a.b.c下面的类。要想导入com.a.b.c下面的类,可以使用这样的形式import com.a.b.c.*;
原因在于:从语法上讲,com.a.b和com.a.b.c之间毫无关系。
如何解决类名冲突问题?
import java.sql.*;
public class Sleep
{
public static void main(String[] args) throws InterruptedException
{
Date today = new Date();
}
}
上面这段代码中java.util包和java.sql包中都有一个名为Date的类,那么就会产生下面的编译错误:
Date today = new Date();
^
java.sql 中的类 java.sql.Date 和 java.util 中的类 java.util.Date 都匹配
Sleep.java:8: 错误: 对Date的引用不明确
Date today = new Date();
^
java.sql 中的类 java.sql.Date 和 java.util 中的类 java.util.Date 都匹配
2 个错误
解决上面问题的办法是:
1)如果只使用两个Date类中的一个,比如java.sql.Date那么在上面两个import语句的基础上加入import java.sql.Date; 语句。
2) 如果两个Date类都要被使用,那么在使用类的时候带上类的路径全名:
java.util.Date date1 = new java.util.Date();
java.sql.Date date2 = new java.util.Date();
可以将Java中的import看成是C++中namespace和using的类似!
1.2 Java SE 5.0 之后引入了静态导入机制(static import)
public class ImportTest
{
public static void main(String[] args)
{
out.println("This is a static import!");
}
}
当使用静态导入时,导入的包中的各个类的静态方法和静态域也会被导入,而不仅仅是类的导入。
静态导入机制的两个重要场景是:
1)使得数学函数以一种更加自然的方式被调用:
public class ImportTest
{
public static void main(String[] args)
{
int x = 2;
int y = 3;
System.out.println(sqrt(pow(x,2)+pow(y,2)));
}
}
上面的例子中,我们使用了静态导入,那么我们就不用每次繁琐的使用Math.sqrt和Math.pow了。
2)处理一些笨重繁琐的常数;
1.3 将一个类添加到一个包中:
要将类放入到一个包中,需要将包的名称放到类所在的源文件的开始位置。如果没有在开始位置添加这个包名,那么这个类将会放入到默认包中,
而在Java的最新版本中,默认包下的类是无法通过import来进行导入的。
在测是包的路径时遇到了一些问题:
public class TestPackage
{
public static void main(String[] args)
{
System.out.println("This is the end of the world!");
}
}
不管编译结果如何,最终形成的.class文件一定要放在 ./com/jiangheng/Test/ 目录下,这样java com.jiangheng.Test.TestPackage 才能正确执行。
2.一些类的设计原则:
a. 除非有特别需要,否者将所有的字段都定义为private。
b. 尽量对数据进行初始化。
c. 在一个类中尽量避免使用太多的基本类型的情况!这一条的核心意思就是要以对象的思考方式去思考问题,而不是以一种“心中无对象”的的心态直接跳入细节设计之中。
d. 并不是所有的字段都需要访问器和修改器(有需要就定义,没有需要就不定义).
e.以一种形式化的方式来对类进行定义:
尽量以这样的方式来展开类的内容:
1) 公共特性; (public features)
2) 包范围的特性; (package features)
3) 私有特性; (private features)
对于上面的每一个特性又可以通过一下方式展开:
-----实例方法(instance methods)
-----静态方法(static methods)
-----实例域(instance fields)
-----静态域(static fields)
f.将一个具有复杂功能的类分解成多个具有简单功能的简单类:
下面是表示一副牌的类:
{
public CardDeck(){...};
public void shuffle(){...};
public int getTopValue(){...};
public int getTopSuit(){...};
private int[] value; //大小
private int[] suit; //花色
}
显然上面的这个类是一个不好的实际,将对牌的表示和在牌上的操作混合在一起,可以将上面的类分解成下面的两个类:
{
public CardDeck() {...}
public void shuffle() {...}
public Card getTop() {...}
public void draw() {...}
private Card[] cards;
}
public class Card
{
public Card(int aValue,int aSuit) {...}
public int getValue() {...}
public int getSuit() {...}
private int value;
}
g. 让你所建立的类名和方法名尽量的反应类和方法的特性:
转载于:https://www.cnblogs.com/jiangheng/p/3746650.html
Java面向对象程序设计--与C++对比说明:系列2(类机制)相关推荐
- 20175333曹雅坤 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- java面向对象程序设计 习题答案_Java面向对象程序设计习题解答与实验 张桂珠.pdf...
Java 面 向对 象 程 序 设 计 习题 解 答 与 实验 张桂珠 姚晓峰 陈爱国 主编 北 京 邮 电 大 学 出 版 社 ·北 京· 内 容 简 介 Java 面向对象程序设计需要做大量的练习 ...
- 20155328 《Java程序设计》 实验二(Java面向对象程序设计) 实验报告
20155328 <Java程序设计> 实验二(Java面向对象程序设计) 实验报告 单元测试 一.单元测试和TDD 编程时需理清思路,将编程需求等想好,再开始编.此部分可用伪代码实现. ...
- java面向对象程序设计第三版_JAVA面向对象程序设计之创建型设计模式
[本文详细介绍了JAVA面向对象程序设计中的创建型设计模式,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 什么是设计模式 设计模式( Design pattern )是一套被反复使用.多数 ...
- 20145122《Java面向对象程序设计》实验二实验报告
实验名称: Java面向对象程序设计 实验内容: 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 PSP时间 步骤 ...
- Java第二次实验报告——Java面向对象程序设计
北京电子科技学院(BESTI) 实 验 报 告 课程名称:java程序设计实验 班级:1352 姓名:洪韶武 学号:20135219 成绩: ...
- java程序面向对象show,20165309 实验二 Java面向对象程序设计
2017-2018-2 20165309实验二<Java面向对象程序设计>实验报告 一.实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初 ...
- 20155201 实验四《Java面向对象程序设计》实验报告
20155201 实验四<Java面向对象程序设计>实验报告 一.实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android.组件.布局 ...
- java构成对象的三要素_20155237 《JAVA程序设计》实验二(JAVA面向对象程序设计)实验报告...
20155237 <JAVA程序设计>实验二(JAVA面向对象程序设计)实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S ...
最新文章
- python好不好用_python应用情况怎么样?是否真的值得学习?
- ./和../和/三种路径的区别
- qt获取开发板ip地址_qt获取网络ip地址的类
- Eclipse中自定义注释
- DropDownList.SelectedItem与DropDownList.SelectedValue的区别
- IIS7下 【请求被中止: 未能创建 SSL/TLS 安全通道 】 解决方法
- windbg查询内存泄笔记
- 宝塔Linux 8888 进不去
- python如何输入数据形成列表_将Python字典/列表插入到SQL数据库中最有效的方法是什么?...
- 简单好用的开源会议室预约系统
- php程序员中文,php中文网“php程序员工具箱” v0.1版本上线
- QEMU-KVM设备热插拔机制简析
- 织梦DedeCms技术资料
- Android系统连按5次电源键,手机连按5次电源键,能开启“紧急护主”功能,好多人没注意...
- vue+tsx+slot
- Vue中使用Ckplayer播放器
- 在职考研读计算机科学,能否以在职读研的形式学习在职研究生计算机科学与技术专业?...
- 耿丹CS16-2班第七次作业汇总
- OpenGL-36-01SSAO
- 【BZOJ】4355: Play with sequence
热门文章
- 03-26 网络流量分析
- Reverse digits of an integer
- python饼状图颜色一样_使用echarts画饼状图,设置饼状图颜色
- jquery解析php json,使用jQuery解析PHP Json对象.
- 金融统计分析与挖掘实战3.3.1-3.3.3
- python复数类型转换_Python 复数数据类型详解(complex)[学习 Python 必备基础知识][看此一篇就够了]...
- antares harmony engine安装_PS CC2017安装教程
- n皇后问题c语言_用栈解决N皇后问题(C语言)
- 如何创建android布局,如何创建像Android CallLog布局的布局
- 设置div的高度_html中如何让div居中