http://www.verejava.com/?id=16992770416239

/**对象与对象, this的引用题目:我把书借给朋友,朋友看完归还书思路:1. 从题目的名词找出对应的类 朋友(Friend) ,我(Person),书(Book)2. 找出类与类之间的关系 书是属于我的  Book->Person朋友是属于我的朋友 Friend->Person 但是必须经过我的同意才能成为我的朋友3. 通过2就可以知道 a->b 就在 b中要添加一个a 的引用对象4. 从题目的动词 抽象出 方法  借给(lend) Book->Friend
*/
public class Refenrence1 {public static void main(String[] args) {//实例化我的对象Person p = new Person();p.setName("胡杨");//实例化一本java编程书籍,并添加到我里面p.setBook(new Book("Java编程书籍"));//打印我拥有的书籍名称System.out.println(p.getName() + " 拥有一本 " + p.getBook().getBookName());//实例化一个朋友对象Friend friend = new Friend();friend.setName("李阳");//将李阳设置成我的朋友,当然我也成为李阳的好朋友p.setFriend(friend);//打印我的好朋友System.out.println("我的好朋友是 : " + p.getFriend().getName());//然后把书借给朋友p.lendBook();//朋友打印拥有的书籍System.out.println(friend.getName() + " 也可以读 " + friend.getBook().getBookName() + " 了");//归还书籍friend.setBook(null);//打印我拥有的书籍名称System.out.println(friend.getName() + " 也可以读 " + friend.getBook().getBookName() + " 了");System.out.println(p.getName() + " 拥有一本 " + p.getBook().getBookName());//然后我检查一下我的书籍发现李阳把书弄坏了,断绝朋友关系p.setFriend(null);System.out.println("我的朋友是: " + p.getFriend());}
}class Friend {private String name;private Book book;//借给我的书的引用private Person person;//我也是朋友的好朋友public String getName() {return this.name;}public void setName(String name) {this.name = name;}public Book getBook() {return book;}public void setBook(Book book) {this.book = book;}public Person getPerson() {return person;}public void setPerson(Person person) {this.person = person;}
}class Person {private String name;private Book book;//book属于我,添加一个Book对象的引用private Friend friend; //friend是我的朋友, 添加一个Friend对象引用//把书借给朋友public void lendBook() {friend.setBook(book);}public String getName() {return this.name;}public void setName(String name) {this.name = name;}public Book getBook() {return this.book;}public void setBook(Book book) {this.book = book;}public Friend getFriend() {return this.friend;}public void setFriend(Friend friend) {//你是我的好朋友this.friend = friend;//我也是你的好朋友friend.setPerson(this);}
}class Book {private String bookName;public Book(String bookName) {this.bookName = bookName;}public String getBookName() {return this.bookName;}public void setBookName(String bookName) {this.bookName = bookName;}
}

http://www.verejava.com/?id=16992770416239

Java 面向对象 之 对象引用 this的引用相关推荐

  1. Java学习笔记day14(两个引用指向同一对象内存图解、成员变量和局部变量的区别、private关键字、this关键字、构造方法的特点、面向对象标准汽车类练习)

    *1.两个引用指向同一对象内存:  *         例子:Phone.java与Phone_Test.java /** 手机类:* 成员变量:品牌,价格,颜色...* 成员方法:打电话,发短信.. ...

  2. JAVA面向对象-----final关键字

    JAVA面向对象-–final关键字 1:定义静态方法求圆的面积 2:定义静态方法求圆的周长 3:发现方法中有重复的代码,就是PI,圆周率.1:如果需要提高计算精度,就需要修改每个方法中圆周率. 4: ...

  3. 12 Java面向对象之多态

    JavaSE 基础之十二 12 Java面向对象之多态 ① 多态的概念及分类 多态的概念:对象的多种表现形式和能力 多态的分类 1. 静态多态:在编译期间,程序就能决定调用哪个方法.方法的重载就表现出 ...

  4. 谈谈java面向对象之抽象,手把手带你搞定java面试之面向对象

    计算机语言晦涩难懂,打算利用通俗易懂的文字带领大家学习java基础.如果文中有什么错误的地方,欢迎大家在评论区指正,免得我误人子弟. Question:当面试JAVA开发岗位的时候,面试官最爱问的问题 ...

  5. Java 面向对象细节

    文章目录 前言 二.类与对象 2.0.类的定义与对象的使用 2.0.1.类的语法格式 2.0.2.对象的创建和使用 2.0.3.Java堆内存与栈内存 2.0.4.this引用 2.1.static修 ...

  6. Java 基本功之(二)Java 面向对象

    转载自https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/basis/Java%E5%9F%BA%E7%A1%80%E7%9F% ...

  7. 深入理解Java面向对象三大特性 封装 继承 多态

    1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...

  8. 舔砖加瓦(java)之java面向对象

    添砖加瓦(java) java面向对象 前言: 大家好我是kdy丶 文章目录 添砖加瓦(java) ***java面向对象*** 前言: 一丶面向对象与面向过程: 1丶面向对象与面向过程的区别: 2丶 ...

  9. 三篇文章彻底搞懂Java面向对象之一

    写在前面,Java基础系列文章都是作者基于b站尚硅谷的Java基础视频所做的笔记,没有时间的同学可以认真看看,如果有时间的同学,还是建议看看视频,毕竟笔记说到底还是自己的东西,每个人的习惯也是不一样的 ...

最新文章

  1. 关于共用体所占的内存空间的问题
  2. 一文读懂深响年度大会,增长密码藏在这些关键词里
  3. vijos p1659——河蟹王国(线段树)(复习)
  4. 课时 11:可观测性:你的应用健康吗?(莫源)
  5. php self 内存,php导致内存溢出
  6. 改变dom样式的方法
  7. jsp学习之路之安装Apache Tomcat7.0服务器
  8. GNS3全面详解系列-GNS3的前世今生
  9. WebViewJavascriptBridge 进行js 与native通信。
  10. matlab定积分例子,利用Matlab进行不定积分运算示例巧妙至极.doc
  11. workerman gatawayworker 定时器
  12. 2021-03-24
  13. HFUT雨课堂形式与政策【支持考试】
  14. Merge碰到ORA-30926 无法在源表中获得一组稳定的行
  15. 关于如何排查vpn服务器无法转发的问题
  16. AC695X_FCCBQB认证资料获取[杰理全系列]
  17. oracle 结果集已耗尽_结果集已耗尽
  18. python 有没有 hold on的用法
  19. mysql xtrabackup_编写脚本令Xtrabackup对MySQL数据进行备份的教程
  20. 使用 Azure Monitor 快速构建 OS 内部指标监控平台

热门文章

  1. grub2与grub区别
  2. android Notification分析—— 您可能会遇到各种问题
  3. 新添加到Windows Azure 技术内容的现场记录和现实世界的指导
  4. 2018.12.27|区块链技术头条
  5. Ceisum官方教程1 -- 开始
  6. Qt工程pro文件的简单配置(尤其是第三方头文件和库)
  7. CS224d lecture 9札记
  8. Dev-Cpp 5.5.2 MinGW 4.7.2 写pthread C++ 多线程
  9. 1D和2D条码生成、检测、识别控件Barcode Xpress
  10. web memory