java小白也能懂的面向对象
类是对一组具有共同特征和行为的对象的抽象描述。
理解
[1]类是专门用于描述现实生活中的事物的。
[2]类描述的事物都具有共同的特征和行为。
[3]类就是我们通常所说的 “类型” ,描述的是一个群体性概念,对群体性概念是一个抽象描述。
案例: 高富帅、白富美、屌丝、沙雕
为什么要提出类的概念?
现实生活中,提出类的概念就是为了认知识别事物。
类可以快速生成对象,类是对象的抽象描述。
1.1 对象(Object)的概念
对象是类的一个具体实现,对象表示的是一个独立的,唯一的个体。
对象的特征:
[1] 独立的,唯一的 => 对象和对象之间是相互独立的,没有任何关系。即使是同一类型的对象。
[2] 对象承载的数据一定是不同的。
[3] 对象描述的是个体,对象是具体的。特指某一个具体的事物。
[4] 对象一定具有类所属的特性和行为。
1.2 属性
在程序中,类或者对象的特征称为属性。属性用于的数据叫做属性值。例如:对象小明拥有姓名属性,小明就是姓名的属性值。
1.3 方法
在程序,类或者对象的行为称为方法。
在程序中,类和对象的表述:
类是一组具有相同属性和方法的对象的抽象描述。
对象是一个具体的事物,具有一组属性和方法。
1.4 如何定义一个类?
创建类->创建对象->解决具体业务问题
语法
[修饰符] class 类名{ 属性 方法 } |
定义一个Student类
public class Student{ // 学生的特性(属性) String id; String name; int age; char gender; public void sayHi(){ System.out.println("我的姓名:"+name+",我的学号:"+id); } } |
总结:
[1]类的定义包含两部分成员,一个是属性、一个是方法。
属性因为定义的位置,也称为成员变量,本质上属性就是类的一个成员,方法也成员类的成员方法。
[2]属性的作用域是整个类型,所以方法中可以直接访问属性。
[3]在定义成员变量时可以对其初始化。如果不对其初始化,Java使用默认的值对其初始化。(数值:0,0.0 char:\u0000, boolean:false, 所有引用类型:null)
[4]属性定义格式:
[修饰符] 属性类型 属性名 [=默认值] |
在面向对象的语言中,整个程序的基本单位是类,通过类来组织程序。
所有的类声明的变量都是引用数据类型,引用数据类型必须通过new申请空间。
1.5 创建对象的过程
创建一个对象分为两个步骤:先声明对象,然后申请内存空间。
// 【1】声明s1的变量,s1是一个Student类型的对象 // s1是Student的其中一个实例 // Student s1 = null; // 【2】给s1申请内存空间(实例化的过程) //s1 = new Student(); |
通过.来访问对象的成员(属性和方法),通过实例结合.可以访问属性/成员变量,所有属性/成员变量也称为实例变量。
public class Test01{ public static void main(String[] args){ Student s1 = new Student(); //s1.name = "二狗"; //s1.id = "001"; //s1.age = 20; s1.sayHi(); //System.out.println(s1); Student s2 = new Student(); //s2.name = "三狗"; //s2.id = "001"; //s2.age = 20; s2.sayHi(); //System.out.println(s2); } } |
对象内存图
1.6 如何利用面向对象思维思考问题?
需求:用手机播放Mp3—最炫名族风?
public class Phone{ String brand; String type; float price; String color; public void start(){ System.out.println(brand+":"+type+" start..."); } public void stop(){ System.out.println(brand+":"+type+" stop..."); } public void play(Music music){ System.out.println(brand+":"+type+" play:"+music.name); System.out.println(music.singer); music.friendlyTime(); System.out.println(music.content); } } |
public class Music{ String name; String category; String content; String singer; int time; // 单位是秒 public void friendlyTime(){ int h,m,s; h = time / 3600; m = time % 3600 / 60; s = time % 60; System.out.println("时长:" + ((h>0) ? (h+":"):"") +m+":"+s); } } |
public class Test03{ public static void main(String[] args){ Phone phone = new Phone(); phone.brand = "Apple"; phone.type = "iPhone x"; phone.price = 10000.0f; Music music = new Music(); music.name = "最炫名族风"; music.singer = "凤凰传奇"; music.time = 151; music.content = "苍茫的天涯是我的爱\n苍茫的天涯是我的爱\n苍茫的天涯是我的爱"; phone.play(music); } } |
java小白也能懂的面向对象的更多相关文章
- JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块
JAVA之旅(四)--面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块 加油吧,节奏得快点了 1.概述 上篇幅也是讲了这点,这篇幅就着重的讲一下思想和案例 就拿买 ...
- 老杜告诉你java小白到大神是怎么炼成的(转载)
老杜告诉你java小白到大神是怎么炼成的 1. 学习前的准备 一个好的学习方法(应该怎么学习更高效): 一个合格的程序员应该具备两个能力 有一个很好的指法速度(敲代码快) 有一个很好的编程思想(编程思 ...
- PHP笔记——java程序员看懂PHP程序
PHP笔记——java程序员看懂PHP程序 php是一种服务器端脚本语言,类型松散的语言. <?php ?> xml风格 <script language=”ph ...
- Java小白如何一步步学好Java,听听企业Java培训师的实践经验吧
今天我准备给小主展示一篇Java培训老师的文章,希望能给Java小白一个学好Java的路径或者提示.以下就是原文: 从大学到现在,我使用Java已经将近20年,日常也带实习生,还在公司内部做train ...
- 从Java小白到阿里巴巴工程师,回顾我两年来的学习经历
添加描述
- 从Java小白到收获BAT等offer,分享我这两年的经验和感悟
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
- 20155202 《Java程序设计》实验二(面向对象程序设计)实验报告
20155202 <Java程序设计>实验二(面向对象程序设计)实验报告 代码托管 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉 ...
- Java小白手记2:一些名词解释
看到<Java 征途:行者的地图> ,这是一篇有关java学习路径文章.对我等Java小白有指引作用.里面提到了一些基本的名词术语,有些我知道,有些不知道,再补上一些自己曾觉得模糊的,记录 ...
- 1、Java小白之路前言
大二一年准备好好学习Java,养成一个良好的习惯写博客,但是由于各种各样的原因,并没有坚持下来.而正好又赶上大三结束,去实习,发现自己的基础还是有些薄弱,所以决定,重新走上这条Java小白之路. 时隔 ...
随机推荐
- 安卓微信端打开H5页面背景图被键盘挤压移动位置解决
问题:在微信端(安卓浏览器也如此)打开的H5登录页面中,点击输入信息,弹出软键盘会挤压背景图片. 本来的body宽高设置body{width:100%,height:100%},不起作用,这样写就会导 ...
- Jmeter笔记(Ⅱ)使用Jmeter实现轻量级的接口自动化测试
接口测试虽然作为版本的一环,但是也是有一套完整的体系,有接口的功能测试.性能测试.安全测试:同时,由于接口的特性,接口的自动化低成本高收益的,使用一些开源工具或一些轻量级的方法,在测试用例开发的成本不 ...
- Intellij IDEA 配置Tomcat远程调试
一.前言 在服务器端开发过程中,由于服务器环境差异导致运行结果不符合预期. 所以就需要到IDEA Debug 服务器代码.看起来貌似很高大上的事情. 今天就说说使用Intellij IDEA 配置的方 ...
- 【速读】——ResNeXt
Saining——[arXiv2017]Aggregated Residual Transformations for Deep Neural Networks 目录 作者和相关链接 主要思想 Res ...
- 《ASP.NET Core In Action》读书笔记系列一 ASP.NET Core 的诞生
最近打算系统学习一下asp.net core ,苦于没有好的中文书藉,只好找来一本英文的 <ASP.NET Core In Action>学习.我和多数人一样,学习英文会明显慢于中文.希 ...
- pthread_cond_wait虚假唤醒
pthread_cond_wait中的while()不仅仅在等待条件变量前检查条件cond_is_false是否成立,实际上在等待条件变量后也检查条件cond_is_false是否成立.在多线程等待的 ...
- Literal绑定数据
前台: <asp:Literal ID = "ChiCunShow" runat = "server"></asp:Literal> 后 ...
- The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application问题解决方案参考
错误信息:The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the ...
- 使用laraval框架和前端完成restful风格的请求对接(这里只是讨论restful的概念)
现在,在开发中restful风格的api是比较流行的,尤其是在前后端分离的架构中. 这些东西这一下这篇文章中说的很详细:RESTful接口设计原则和优点 下面,我们来讨论如何使用laraval和前端完 ...
- C语言实例:类型转换
数组转换成16进制数: #include <stdio.h> #include <stdlib.h> typedef unsigned char UINT8; typedef ...