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小白之路. 时隔 ...
随机推荐
- mysql千万级大数据SQL查询优化30条经验
转自http://blog.163.com/zhangjie_0303/blog/static/9908270620146951355834/ 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 w ...
- arcgis for JavaScript API 4.5与4.3的区别
arcgis 4.5与4.3区别: 鉴于本人使用4.3时间比较久,而arcgis for JavaScript API于9月28日推出了4.5版本,但是直接更换4.5的init.js会出现意想不到的错 ...
- CentOS7中GreVPN的配置
目前只实现了三层的GRE隧道,但其实二层也可以实现的,但是没有找到很好的方法,待研究 环境如下: host A : 121.207.22.123 host B: 111.2.33.28 1. 在ho ...
- ubuntu14.04安装opencv3.1
1.下载opencv3.1源码http://opencv.org/releases.html 2.安装opencv3 2.1安装opencv3的依赖 sudo apt-get install buil ...
- Python 字符串操作 starswitch() find() re.IGNORECASE replace() join()
检测开头&结尾开头:startswith()url = 'http://www.python.org' url.startswith('http') >>>True 结尾:e ...
- 【转载】Sikuli安装及使用——基于图像识别自动化工具
一.Sikuli能做什么? 用屏幕截图的方式,用截出来的图形元素组合出神奇的程序实现自动化安装.卸载软件,自动化测试(Windows.mac应用测试,Web测试,移动端测试) 二.安装Sikuli 预 ...
- Redis做分布式锁
在分布式系统中,在接口没有保证幂等性或者在某些场景下相同的服务需要有且仅有一个服务执行的情况下,需要使用分布式锁来保证系统的安全执行. 分布式锁的执行顺序,有服务A,分别部署了三个节点为A1.A2.A ...
- centos安装mariadb
一 配置mariadb官方的yum源 1.进入yum仓库 /etc/yum.repos.d/目录下 手动创建一个 mariadb.repo 写入如下内容 [mariadb] name = Maria ...
- Linux的DNS配置2-主从服务器
1.实验背景 之前写了Linux的DNS配置1-DNS入门,其中只用了一台DNS服务器,但一般在大型网络中,都要通过配置辅助DNS服务器可以提高DNS服务的可靠性,本次实验即配置DNS主从服务器 2. ...
- Linux 下的分屏利器-tmux安装、原理及使用
>> 原文地址