[Java学习]面向对象-package;内部类;UML图表示六种关系
2024-09-03 19:01:09
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:实线实心箭头指向整体。
最新文章
- 人人都是 DBA(XIV)存储过程信息收集脚本汇编
- fstat().stat()函数
- WordPress Pie Register插件‘wp-login.php’多个跨站脚本漏洞
- <;? extends T>;和<;? super T>;
- Ionicons的使用
- Spring注解问题,[action中注入service失败
- 【转】C缺陷和陷阱学习笔记
- SPRING事务的属性有哪些?其中,事务隔离级别有哪几种?什么情况需要使用这几种事务隔离级别?
- String对象的属性和方法
- LeetCode 19 - 删除链表的倒数第N个节点 - [链表]
- 使用setup.py安装python包和卸载python包的方法
- Win10手记-为应用集成SQLite(一)
- 要求根据RandomStr.java:使用类型转换生成六位验证字符串,示例程序每次运 行时,都会生成不同的字符串。
- Mac下django简单安装配置步骤
- VS2013 未找到与约束ContractName ...
- python科学计算和可视化学习报告
- 给HTML初学者的三十条最佳实践
- fork函数相关总结
- 玩转Panabit 2008 Live CD到U盘,Panabit随身行
- Linux系统编程——进程间通信(一)