阅读书目:Java入门经典(第7版) 作者:罗格斯·卡登海德

面向对象编程(OOP)将程序视为对象的集合,确定程序要完成的任务,然后将这些任务指派给最适合完成它们的对象。换言之,计算机程序是一组对象,这些对象协同工作以完成某项任务,有些简单程序看似只有一个对象(类文件)组成,但实际上也使用了其他对象来完成工作。

在面向对象编程中,对象包含两项内容:属性和行为,属性描述对象并使其不同于其他对象,而行为指的是对象能做什么。

1 package com.java24hours;
2
3 public class Modem {
4 int speed;
5
6 public void displaySpeed() {
7 System.out.println("speed: "+speed);
8 }
9 }

通过继承,程序员只需定义新类与现有类的不同之处,就能够创建一个新类。继承其他类可以使用extends语句。

1 package com.java24hours;
2
3 public class ErrorCorrectModem extends Modem {
4 //继承Modem类
5 }

我们称从其他类继承而来的类为子类,被继承的类为超类。Java中存在大量的继承,进而形成继承层次。

简单变量类型转换示例:

int destination = (int)source;

对象间的类型转换:可以在任何需要超类的地方使用类对象。也可以将对象用于需要其子类的地方,但由于子类含有更多信息,如果程序使用对象没有包含的子类方法,将导致错误。将类型用于需要子类的地方,需要进行显式地类型转换。

1 public void paintComponent(Graphics comp){
2 Graphics2D comp2D = (Graphics2D) comp;
3 }

简单变量和对象之间的类型转换,例如:

Integer suffix = new Integer(5396);

int newSuffix = suffix.intValue();
String count = "25";

int myCount = Integer.parseInt(count);
 1 package com.java24hours;
2
3 public class NewRoot {
4 public static void main(String[] arguments) {
5 int number = 100;
6 if(arguments.length>0) {
7 number = Integer.parseInt(arguments[0]);
8 }
9 System.out.println("The square root of "
10 +number
11 +" is "
12 +Math.sqrt(number)
13 );
14 }
15 }

Java的自动封装功能将简单变量值转换为相对应的类,封装功能将对象转换为相对应的简单变量值。

在现在的Java版本中,如下的语句也是合法的语句:

Float total = new 1.3F;
float sum = total/5;
Integer suffix = 5309;

创建对象:

1 package com.java24hours;
2
3 public class Modem {
4 int speed;
5
6 public void displaySpeed() {
7 System.out.println("speed: "+speed);
8 }
9 }
 1 package com.java24hours;
2
3 public class CableModem extends Modem{
4 String method = "cable connection";
5
6 public void connect() {
7 System.out.println("Connecting to the Internet...");
8 System.out.println("Using a "
9 +method);
10 }
11 }
 1 package com.java24hours;
2
3 public class DslModem extends Modem{
4 String method = "DSL phone connection";
5
6 public void connect() {
7 System.out.println("Connecting to the Internet...");
8 System.out.println("Using a "
9 +method);
10 }
11 }
 1 package com.java24hours;
2
3 public class ModemTester {
4 public static void main(String[] arguements) {
5 CableModem surfBoard = new CableModem();
6 DslModem gateway = new DslModem();
7 surfBoard.speed = 5_000_000;
8 gateway.speed = 4_000_000;
9 System.out.println("Trying the cable modem: ");
10 surfBoard.displaySpeed();
11 surfBoard.connect();
12 System.out.println("Trying the DSL modem ");
13 gateway.displaySpeed();
14 gateway.connect();
15 }
16 }

Java不像C++中一个类可以继承多个类,任何一个类只有一个超类。

最新文章

  1. C#非常重要基础之多态
  2. 在ubuntu上配置nginx+php+mysql+phpmyadmin
  3. mysql zip 版本配置方法
  4. [Spring入门学习笔记][创建网站URL]
  5. python(序列递归)【输出原子级别元素。。。】
  6. awk 中 FS的用法
  7. SRM 558 SurroundingGame
  8. 基于emWin的WAV,MP3软解软件播放器,带类似千千静听频谱,含uCOS-III和FreeRTOS两个版本
  9. js 自动类型转换
  10. 集合基本操作 Python DAY2
  11. Linux下对lvm逻辑卷分区大小的调整(针对xfs和ext4不同文件系统)
  12. Java开发环境配置(2)--jdk配置和 多个JDK问题处理
  13. Kafka Streams简介: 让流处理变得更简单
  14. web自动化-窗口句柄及位置变化
  15. 微信小程序中使用Async-await方法异步请求变为同步请求
  16. hdu5992 kdt
  17. std::string find 的返回值
  18. 不用MathType, 如何在Mac Word中插入公式
  19. fedora 使用
  20. QTP设置共享对象库

热门文章

  1. Web Storage API的介绍和使用
  2. c++中CString:: Find , ReverseFind, Left, Right
  3. Java (二)基于Eclipse配置Commons IO的环境
  4. 对于dijkstra最短路算法的复习
  5. try with resource当中你没有注意到点。。
  6. 下载 node.js 步骤 bower npm 报错解决
  7. shell-变量的数值运算与特殊应用expr
  8. MeteoInfoLab脚本示例:利用比湿、温度计算相对湿度
  9. mysql 操作数据库
  10. 经验分享:对于刚接触开发的大学生,怎么在Windows查看与关闭端口占用方法?