阅读书目: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. JS之回调函数(callback)

    1.什么是回调函数? -- 简单点说,一个函数被作为参数传递给另一个函数(在这里我们把另一个函数叫做"otherFunction"),回调函数在otherFunction中被调用. ...

  2. 032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例——闰年问题

    032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例--闰年问题 本文知识点:运算符和if-else条件语句的综合案例 ...

  3. VS调试时查看动态数组的全部元素

    转载:https://blog.csdn.net/sinat_36219858/article/details/80720527

  4. Example Code for a TMP102 I2c Thermometer————Arduino

    参考:https://playground.arduino.cc/Code/TMP102/ Example Code for a TMP102 I2c Thermometer I've fairly ...

  5. 51单片机I2C总线

    I2C总线是飞利浦公司推出的一种串行总线,所有器件共用两根信号线,实现数据的传输. 总线接口接了上拉电阻,默认为高电平,所以就可以用"当低电平出现"来标记出一种起始信号.我个人把它 ...

  6. 九、Python+Selenium模拟登录

    研究QQ登录规则的话,得分析大量Javascript的加密解密,比较耗时间.自己也是练习很少,短时间成功不了.所以走了个捷径. Selenium是一个WEB自动化测试工具,它运行时会直接实例化出一个浏 ...

  7. 深入浅出具有划时代意义的G1垃圾回收器

    G1诞生的背景 Garbage First(简称G1)收集器是垃圾收集器技术发展历史上的里程碑式的成果,它开创了收集器面向局部收集的设计思路和基于Region的内存布局形式.HotSpot开发团队最初 ...

  8. Linux操作系统(第二版)(RHEL 8/CentOS 8)

    Linux操作系统(第二版)(RHEL 8/CentOS 8) http://www.tup.tsinghua.edu.cn/booksCenter/book_08172501.html Linux操 ...

  9. 一键同步,紧跟潮流——CODING 现已支持导入 GitHub 仓库

    为方便用户从 GitHub 快速迁移到 CODING 并开始使用,CODING 现已支持导入 GitHub 仓库.免去繁琐步骤,只需简单两步操作即可完成导入,让仓库静默同步,无缝衔接,平滑过渡:同时还 ...

  10. Prometheus 系列开篇:为什么要学 Prometheus ?

    「Prometheus 系列开篇:为什么要学 Prometheus ?」首发于[陈树义]公众号,点击跳转到原文https://mp.weixin.qq.com/s/HCS6X3l6nVBw_hAnd6 ...