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小白之路. 时隔 ...
随机推荐
- C# Unity的使用
Unity是微软推出的IOC框架, 使用这个框架,可以实现AOP面向切面编程,便于代码的后期维护,此外,这套框架还自带单例模式,可以提高程序的运行效率. 下面是我自己的案例,以供日后参考: 使用VS2 ...
- ultiple Endpoints may not be deployed to the same path
@Configurationpublic class WebSocketConfig { //打war包启动需要注释掉此:否则报 :DeploymentException: Multiple Endp ...
- 使用 acme.sh 签发续签 Let‘s Encrypt 证书 泛域名证书
1. 安装 acme.sh 安装很简单, 一个命令: curl https://get.acme.sh | sh 并创建 一个 bash 的 alias, 方便你的使用 alias acme.sh=~ ...
- 303. Range Sum Query - Immutable(动态规划)
Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive ...
- SpringBoot缓存之redis--最简单的使用方式
第一步:配置redis 这里使用的是yml类型的配置文件 mybatis: mapper-locations: classpath:mapping/*.xml spring: datasource: ...
- 异步 async & await
1 什么是异步 异步的另外一种含义是计算机多线程的异步处理.与同步处理相对,异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程. 2 异步场景 l 不 ...
- 信用评分卡(A卡/B卡/C卡)的模型简介及开发流程|干货
https://blog.csdn.net/varyall/article/details/81173326 如今在银行.消费金融公司等各种贷款业务机构,普遍使用信用评分,对客户实行打分制,以期对客户 ...
- TypeError: '_io.TextIOWrapper' object does not support item assignment
纯小白 遇到的细节问题: 报错 一开始看到这个傻逼了 TypeError: '_io.TextIOWrapper' object does not support item assignment 其实 ...
- liunx驱动----按键中断
liunx 中断 先设置异常入口 异常向量 void __init trap_init(void) 构造了异常向量 vector_irq+offset 按下按键: cpu自动进入异常模式 ...
- 20175208『Java程序设计』课程 结对编程练习_四则运算
20175208 结对编程练习_四则运算(第一周) 结对成员:20175208张家华,20175202葛旭阳 一.需求分析: 实现一个命令行程序,要求: (1)自动生成指定数量的小学四则运算题目(加. ...