阅读书目: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++中一个类可以继承多个类,任何一个类只有一个超类。

Java入门(4)的更多相关文章

  1. Java入门第一章

    后天就是十一长假了,亲们准备好了去哪儿玩了吗? 今天有点空,就来聊聊Java吧,当然是一些Java入门知识了,网上有很多,这里我只是列举一些我自己学到的,感谢大家关注喵的博客这么久,也为大家带来点新知 ...

  2. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  3. 第1章Java入门体验

    第1章Java入门体验 1.java简介和平台应用 Java是sun公司开发出来,现在属于ORACLE公司java分为几个部分:首先是最基础的Java SE部分,这部分是Java的基础知识,主要包括: ...

  4. Java入门记(五):容器关系的梳理(下)——Map

    注意:阅读本文及相关源码时,需要数据结构相关知识,包括:哈希表.链表.红黑树. Map是将键(key)映射到值(value)的对象.不同的映射不能包含相同的键:每个键最多只能映射到一个值.下图是常见M ...

  5. Java入门(二)——果然断更的都是要受惩罚的。。。

    断更了一个多月,阅读量立马从100+跌落至10-,虽说不是很看重这个,毕竟只是当这个是自己的学习笔记,但有人看,有人评论,有人认同和批评的感觉还是很巴适的,尤其以前有过却又被剥夺的,惨兮兮的. 好好写 ...

  6. Android初涉及之Android Studio&JAVA入门--二月不能不写东西

    是的,我还没有放弃写博客. 是的,我也没有放弃PHP的学习. 是的,我要开始学学最TM火的Android开发了. 你呢 1.Android Studio 一.概况 安装和配置什么的就不具体说了,网上一 ...

  7. JAVA手记 JAVA入门(安装+Dos下运行)

    JAVA入门特供= =,今天设置环境变量后用dos运行的时候发现出现“找不到或无法加载主类”,索性查了些资料重新看了看JAVA入门的部分. 声明:我的笔记本暂时用的是Win10系统,Windows其他 ...

  8. Java入门教程总目录

    Java入门教程总目录 持续更新中... 1.Java常识汇总 2.Java框架对比 3.Java技术路线 4.Java编码规范 5.Java环境变量配置 6.枚举 7.操作符 12.定时任务

  9. Java入门的程序汇总

    Java入门的基础程序,虽然很简单,也要多练习,下面有重点的总结一下 1.HelloWorld这个不说了 2.常量与变量部分 基本数据类型使用 public class Javashujuleixin ...

  10. Java入门学习知识点汇总

    Java入门重要知识点在这里总结一下,以方便日后复习,这部分内容主要有:变量和常量,常用的运算符,流程控制语句,数组,方法这些内容 一.变量和常量 1.Java关键字 先贴张图: 所有关键字区分大小写 ...

随机推荐

  1. Linux 的shell指令

    ------十六进制查看文件 ------  ls 命令 ---- cp  ----- chmod

  2. 我把这个贼好用的Excel导出工具开源了!!

    写在前面 不管是传统软件企业还是互联网企业,不管是管理软件还是面向C端的互联网应用.都不可避免的会涉及到报表操作,而对于报表业务来说,一个很重要的功能就是将数据导出到Excel.如果我们在业务代码中, ...

  3. Java知识系统回顾整理01基础06数组07数组工具类Arrays

    一.Arrays简介 Arrays是针对数组的工具类,可以进行 排序,查找,复制填充等功能. 大大提高了开发人员的工作效率. 二.Arrays提供的数组复制方法 与使用System.arraycopy ...

  4. python排序算法总结和实现

    ------------------希尔排序------------- 一直没搞懂希尔排序怎么搞得 def Shell_sort(L): step = len(L)/2 while step > ...

  5. K8S环境的Jenkin性能问题处理续篇(任务Pod设置)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos K8S环境的Jenkin性能问题处理 本文是<K ...

  6. 《VC++ 深入详解》 第3版 这是盗版书么~。。。

    <VC++ 深入详解> 第3版 www.broadview.com.cn 书读到一小半,发现书重复了一部分,缺失一部分.... 难受~ 比较难继续下去了 有一样的小伙伴么~ <VC+ ...

  7. Java中类型判断的几种方式

    1. 前言 在Java这种强类型语言中类型转换.类型判断是经常遇到的.今天就细数一下Java中类型判断的方法方式. 2. instanceof instanceof是Java的一个运算符,用来判断一个 ...

  8. Centos7 Docker配置TLS认证的远程端口的证书生成教程(shell脚本一键生成)

    通过 TLS来进行远程访问 百度百科 - TLS.我们需要在远程 docker 服务器(运行 docker 守护进程的服务器)生成 CA 证书,服务器证书,服务器密钥,然后自签名,再颁发给需要连接远程 ...

  9. Windows7 提示“无法访问 xxxx,您没有权限访问,请与网络管理员联系请求访问权限”的解决办法

    Windows7 客户端访问提示"无法访问 xxxx,您没有权限访问,请与网络管理员联系请求访问权限"的解决办法

  10. 扩展、接管MVC都不会,还会用Spring Boot?

    持续原创输出,点击上方蓝字关注我 目录 前言 Spring Boot 版本 如何扩展MVC? 如何自定义一个拦截器? 什么都不配置为什么依然能运行MVC相关的功能? 如何全面接管MVC?[不推荐] 为 ...