[Java学习]面向对象-package;内部类;UML图表示六种关系
package 软件包
- 类名前加入命名空间(包),解决命名冲突问题。
- 定义格式:
公司域名倒叙.项目名.模块名;
package语句写在文件第一行 - 使用
import语句导入package
java.lang; 软件包下的所有类系统自动导入。 - 编译
javac -d 生成路径 java源文件路径 - 运行
java 完整类名
内部类
基本
- 定义:类里面的类。
- 好处:内部类可以访问其外部类的私有数据。
- 分为 :静态内部类,成员内部类,局部内部类,匿名内部类
静态内部类
- 调用静态内部类的静态方法:
OuterClass.InterClass.methods1(); - 调用静态内部类的成员方法:
InnerClass inner=new OuterClass.InnerClass();
inner.methods2();
匿名内部类
- 定义:没有名字的类。
- 优点:少定义一个类。
- 缺点:无法重复使用。
未采用匿名内部类代码
package com.test.jinhj;
public class SubClass{
public static void testM(CustomerService cs) {
cs.logout();
}
public static void main(String[] args) {
testM(new CustomerService());
}
}
interface CustomerService{
//退出系统
void logout();
}
class CustomerServiceImpl implements CustomerServerce{
public void logout() {
System.out.println("退出。");
}
}
采用匿名内部类代码
package com.test.jinhj;
public class SubClass{
public static void testM(CustomerService customerService) {
customerService.logout();
}
public static void main(String[] args) {
//整个"CustomerService(){}"称为匿名内部类
testM(new CustomerService() {
public void logout() {
System.out.println("exit!");
}
});
}
}
interface CustomerService{
//退出系统
void logout();
}
UML图、六种类和类之间的关系
类和类之间的关系:
- 泛化关系:继承。
UML:实线空心箭头。 - 实现关系: 类实现接口。
UML:虚线空心箭头。 - 关联关系:在当前类中含有其他类的引用。
下例中Me和Friend就是关联关系
public class Me{
String name;
Friend f;
Me(Friend f){
this.f=f;
}
}
public class Friend{
String name;
String addr;
Friend(String addr){
this.addr=addr;
}
}
public class Test{
public static void main(String[] args){
Friend f=new Friend("北京");
//当创建完Me的对象后,关联关系已建立,Me对象m中已有Friend对象f的内存地址。
Me m=new me(f);
System.out.println(m.f.addr);
}
}
UML:实线箭头。
- 依赖关系:当前类中的局部变量是另一个类的引用,两者是依赖关系。
UML:虚线箭头。 - 聚合关系:聚合关系是一种关联关系,是整体和部分的关系,两者的生命周期相互不影响。
UML:实线空心箭头指向整体。 - 合成关系:合成关系是一种关联关系,是整体和部分的关系,整体的关系决定部分的生命周期。
UML:实线实心箭头指向整体。
[Java学习]面向对象-package;内部类;UML图表示六种关系的更多相关文章
- Java学习笔记之---内部类
Java学习笔记之---内部类 (一)成员内部类 内部类在外部使用时,无法直接实例化,需要借助外部类信息才能实例化 内部类的访问修饰符可以任意,但是访问范围会受到影响 内部类可以直接访问外部类的成员, ...
- Java学习---面向对象的远程方法调用[RMI]
基础知识 分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果. 常见的分 ...
- java学习面向对象之异常之一
一.异常的概述: 什么是异常?在我们编写java程序的时候,会出现一些问题,比如内存溢出啊或者数组索引超出最大索引啊,这些编程当中出现的这些个问题就是异常.但是异常也分为可以处理的和不可以处理的.比如 ...
- Java自学-接口与继承 UML图
UML 图 步骤 1 : UML 图 -- 类之间的关系 UML-Unified Module Language 统一建模语言,可以很方便的用于描述类的属性,方法,以及类和类之间的关系 步骤 2 : ...
- UML中的六种关系的比较与学习
通过不断的学习并绘制UML图,整个画图的过程中深刻体会到其核心部分还是理解事物之间的关系,总结六大关系来深入学习,主要关系有六种:继承.实现.依赖.关联.聚合.组合. 区别于联系: 1 ...
- 软件毕业设计文档流程与UML图之间的关系
每个模型都是用一种或者多种UML图来描述的,映射关系如下: 1.用例模型:使用用例图.顺序图.通信图.活动图和状态图来描述. 2.分析模型:使用类图和对象图(包括子系统和包).顺序图(时序图).通信图 ...
- java学习面向对象之匿名内部类
之前我们提到“匿名”这个字眼的时候,是在学习new对象的时候,创建匿名对象的时候用到的,之所以说是匿名,是因为直接创建对象,而没有把这个对象赋值给某个值,才称之为匿名. 匿名对象回顾: class N ...
- java学习面向对象之内部类
什么是面向对象内部类呢?所谓的内部类,即从字面意义上来理解的话,就是把类放到类当中. 那么内部类都有什么特点呢? 1.内部类可以访问包裹他的类的成员. 2.如果包裹他的类想访问被其包裹的类的话就得实例 ...
- java学习面向对象之多态
如何理解多态,让我们举个例子来描述一下,因为单纯的说多态大家可能不理解: abstract class Animal { ; abstract void eat(); public void run( ...
随机推荐
- Spring cloud info信息显示
父工程添加配置如下 <build> <finalName>microservicecloud</finalName> <resources> <r ...
- vue 监听state 任意值变化、监听mutations actions
// store.watch((state) => state.count + 1, (newCount) => { // console.log(' 监听') // }) // stor ...
- linux下mysql开启远程访问权限 防火墙开放3306端口
linux下mysql开启远程访问权限 防火墙开放3306端口 转载 2017-01-21 作者:JAVA-ANDROID 这篇文章主要为大家详细介绍了linux下mysql开启远程访问权限,防 ...
- Winform自定义控件实例
本文转自http://www.cnblogs.com/hahacjh/archive/2010/04/29/1724125.html 写在前面: .Net已经成为许多软件公司的选择,而.Net自定义W ...
- JS计算滚动条的宽度
1.此方法检验成功 function getScrollbarWidth() { var oP = document.createElement('p'), styles = { width: '10 ...
- 学JS的心路历程-正规表达式Regular Expression
今天我们来看正规表达式,在谈到为什么需要多学这个之前,先来看个示例. 假设需要判断输入字串是否含有“apple”: var text=“A apple a day keeps the doctor a ...
- Ubuntu中清理Network下Connect to Server的入口
转自:http://blog.csdn.net/maxilbert/article/details/51126467 connect to server入口列表文件以xml格式存放在 ~/.confi ...
- export default 与 export
export default 只能导出一个 可以用任意的变量来接收 export 可以暴露多个成员,需要用 import {} 接受成员 需要用名字接受 名字必须跟导出名字一致 //或者as作为别名 ...
- Excel添加下拉菜单
一.选中需要下拉菜单的单元格 二.数据--数据校验 三 .选择序列,填写来源 四.保存
- work单进程群发通知 后面会增加Channel组件的分组推送以及集群推送篇章
<?phpuse Workerman\Worker;use Workerman\Lib\Timer; require_once '../../web/Workerman/Autoloader.p ...