经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
JAVA对象
来源:cnblogs  作者:林千山  时间:2018/10/11 9:32:18  对本文有异议

示例:

  1. public class Book {
  2. /**
  3. * 书名
  4. */
  5. private String name;
  6. /**
  7. * 作者
  8. */
  9. private String author;
  10. /**
  11. * 获取书名
  12. * @return
  13. */
  14. public String getName() {
  15. return name;
  16. }
  17. /**
  18. * 设置书名
  19. * @param name
  20. */
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24. /**
  25. * 获取作者
  26. * @return
  27. */
  28. public String getAuthor() {
  29. return author;
  30. }
  31. /**
  32. * 设置作者
  33. * @param author
  34. */
  35. public void setAuthor(String author) {
  36. this.author = author;
  37. }
  38. }

什么是对象

?《JAVA编程思想》对于对象的定义是:将问题空间中的元素以及它们在方案空间的表示物称作“对象”。
?1. 问题空间:实际解决的问题模型;
?2. 方案空间: 计算机(机器模型)。
?实际的问题在计算机(机器模型)中的表示称为对象。在上面示例中:计算机用独一无二的实体(new Book())表示书籍,这个实体就称为对象,对象是类的实例。

什么是类

?具有相同属性和行为的对象的抽象就是类,即类是对象的蓝图,两者的关系是类的实例就是对象,对象的抽象化就是类。在上面示例中:Book就是类。

对象的特性

?1. 行为:类的方法,示例中的方法:getName(),setName(String name),getAuthor(),setAuthor(String author) 。
?2. 状态:类的属性,示例中的属性:name,author,
?3. 标识:类在内存中的地址,new Book()在内存中的地址就是标识。

面向对象的特征

?1. 封装:隐藏对象的属性,但对使用者提供方法与这些属性交互,重点是使用者只能通过方法访问对象的属性,实现封装需要有一个私有的属性:name,一个属性访问方法:getName(),一个属性更改方法:setName(String name)。
?2. 继承:通过继承已存在的类可以复用这个类的属性和方法,被继承的类称为父类,继承的类称为子类,子类可以创建自己特定功能的代码,父类一般保存的是通用的方法及属性。继承通过extends关键字实现。
继承示例:

  1. // 备注:class可以定义多个类,但只有一个public类,而且public修饰的类名称要和文件名称一致。
  2. public class BookTest{
  3. public static void main(String[] args) {
  4. System.out.println(new HistoryBook().getName());
  5. }
  6. }
  7. class HistoryBook extends Book{
  8. /**
  9. * 发生日期
  10. */
  11. private LocalDate happenDate;
  12. protected LocalDate getHappenDate() {
  13. return happenDate;
  14. }
  15. public void setHappenDate(LocalDate happenDate) {
  16. this.happenDate = happenDate;
  17. }
  18. }

?上面HistoryBook是Book的子类,在main方法里可以直接通过HistoryBook对象获取书名,这个是HistoryBook类中没有的属性,但是因为有继承,它可以调用父类所有的public,protected,default修饰的方法。
?3. 多态:一个变量引用可以指向多个实际类型的现象称为多态。多态的形成建立在继承(extends)/实现(implements)上,重要的一点是父类引用指向子类变量,但不能把父类引用赋值给子类变量。
多态示例:

  1. // 父类引用指向子类,形成多态
  2. Book book = new HistoryBook();
  3. // 报错,原因:不能把父类引用赋值给子类,因为不能确定父类的具体类型,父类可能是A extends Book,也可能是B extends Book,不能把A或B强制转成HistoryBook,因为它们两之间是没有任何联系的。
  4. HistoryBook historyBook = (HistoryBook) new Book();
  5. // 这里是正常运行的,因为book其实指向的是一个HistoryBook的对象,这里是可以强制转换的。
  6. HistoryBook hb = (HistoryBook) book;

?以上是个人对java对象的理解,如有错误,欢迎指正。下一篇文章将阐述抽象和接口的概念。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号