Java入门(4)
阅读书目: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)的更多相关文章
- Java入门第一章
后天就是十一长假了,亲们准备好了去哪儿玩了吗? 今天有点空,就来聊聊Java吧,当然是一些Java入门知识了,网上有很多,这里我只是列举一些我自己学到的,感谢大家关注喵的博客这么久,也为大家带来点新知 ...
- [Java入门笔记] 面向对象编程基础(二):方法详解
什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...
- 第1章Java入门体验
第1章Java入门体验 1.java简介和平台应用 Java是sun公司开发出来,现在属于ORACLE公司java分为几个部分:首先是最基础的Java SE部分,这部分是Java的基础知识,主要包括: ...
- Java入门记(五):容器关系的梳理(下)——Map
注意:阅读本文及相关源码时,需要数据结构相关知识,包括:哈希表.链表.红黑树. Map是将键(key)映射到值(value)的对象.不同的映射不能包含相同的键:每个键最多只能映射到一个值.下图是常见M ...
- Java入门(二)——果然断更的都是要受惩罚的。。。
断更了一个多月,阅读量立马从100+跌落至10-,虽说不是很看重这个,毕竟只是当这个是自己的学习笔记,但有人看,有人评论,有人认同和批评的感觉还是很巴适的,尤其以前有过却又被剥夺的,惨兮兮的. 好好写 ...
- Android初涉及之Android Studio&JAVA入门--二月不能不写东西
是的,我还没有放弃写博客. 是的,我也没有放弃PHP的学习. 是的,我要开始学学最TM火的Android开发了. 你呢 1.Android Studio 一.概况 安装和配置什么的就不具体说了,网上一 ...
- JAVA手记 JAVA入门(安装+Dos下运行)
JAVA入门特供= =,今天设置环境变量后用dos运行的时候发现出现“找不到或无法加载主类”,索性查了些资料重新看了看JAVA入门的部分. 声明:我的笔记本暂时用的是Win10系统,Windows其他 ...
- Java入门教程总目录
Java入门教程总目录 持续更新中... 1.Java常识汇总 2.Java框架对比 3.Java技术路线 4.Java编码规范 5.Java环境变量配置 6.枚举 7.操作符 12.定时任务
- Java入门的程序汇总
Java入门的基础程序,虽然很简单,也要多练习,下面有重点的总结一下 1.HelloWorld这个不说了 2.常量与变量部分 基本数据类型使用 public class Javashujuleixin ...
- Java入门学习知识点汇总
Java入门重要知识点在这里总结一下,以方便日后复习,这部分内容主要有:变量和常量,常用的运算符,流程控制语句,数组,方法这些内容 一.变量和常量 1.Java关键字 先贴张图: 所有关键字区分大小写 ...
随机推荐
- (数据科学学习手札96)在geopandas中叠加在线地图
本文示例文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 国庆期间,抽空给大家分享在geopandas中叠 ...
- TCHAR数据类型介绍
转载:https://blog.csdn.net/mousebaby808/article/details/5259944 并不是所有的Windows操作系统都支持UNICODE编码的API(例如早期 ...
- CF471D MUH and Cube Walls
Link 一句话题意: 给两堵墙.问 \(a\) 墙中与 \(b\) 墙顶部形状相同的区间有多少个. 这生草翻译不想多说了. 我们先来转化一下问题.对于一堵墙他的向下延伸的高度,我们是不用管的. 我们 ...
- vue实现语音播报功能
1,创建一个js文件 (voicePrompt.js) function voicePrompt (text){ new Audio('http://tts.baidu.com/text2audio? ...
- Linux 下 svn 场景实例及常用命令详解
一.SVN使用场景实例 问题: 在使用svn做为版本控制系统的软件开发中,经常会有这样的需求:在工作复本目录树的不同目录中增加了很多文件,但未纳入版本控制系统,这时如果使用svn add命令一个一个的 ...
- Vue结合Django-Rest-Frameword结合实现登录认证(二)
作者:小土豆biubiubiu 博客园:https://www.cnblogs.com/HouJiao/ 掘金:https://juejin.im/user/2436173500265335 微信公众 ...
- C# Socket TCP发送图片与接收图片
如果需要查看更多文章,请微信搜索公众号 csharp编程大全,需要进C#交流群群请加微信z438679770,备注进群, 我邀请你进群! ! ! --------------------------- ...
- id+is+深浅co'p'y
day06 一.id.is 关键字:id #唯一的,如果id相同,说明2个变量指向同一个地址,就是变量一==变量二 注意:id相同值一定相同,值相同但是id不一定相同(不同代码块的值相同,他们就像太阳 ...
- 如何win10 上访问虚拟机(linux)上redis方法
上一回linux上安装了redis,but在window上面连接不上/??? 配置了密码,不行, 防火墙端口打开了也不行??? 1. 首先要修改redis 的配置文件,找到bind节点,修改bind的 ...
- 新手学习C/C++编程过程中常见的那些坑,一定要多多注意!
C/C++中的指针让程序员有了更多的灵活性,但它同时也是一把双刃剑,如果用的不好,则会让你的程序出现各种各样的问题,有人说,C/C++程序员有一半的工作量是花在处理由指针引起的bug上,可想而知,指针 ...