类是对一组具有共同特征和行为的对象的抽象描述。

理解

[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小白也能懂的面向对象的更多相关文章

  1. JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块

    JAVA之旅(四)--面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块 加油吧,节奏得快点了 1.概述 上篇幅也是讲了这点,这篇幅就着重的讲一下思想和案例 就拿买 ...

  2. 老杜告诉你java小白到大神是怎么炼成的(转载)

    老杜告诉你java小白到大神是怎么炼成的 1. 学习前的准备 一个好的学习方法(应该怎么学习更高效): 一个合格的程序员应该具备两个能力 有一个很好的指法速度(敲代码快) 有一个很好的编程思想(编程思 ...

  3. PHP笔记——java程序员看懂PHP程序

    PHP笔记——java程序员看懂PHP程序   php是一种服务器端脚本语言,类型松散的语言. <?php   ?>       xml风格 <script language=”ph ...

  4. Java小白如何一步步学好Java,听听企业Java培训师的实践经验吧

    今天我准备给小主展示一篇Java培训老师的文章,希望能给Java小白一个学好Java的路径或者提示.以下就是原文: 从大学到现在,我使用Java已经将近20年,日常也带实习生,还在公司内部做train ...

  5. 从Java小白到阿里巴巴工程师,回顾我两年来的学习经历

    添加描述

  6. 从Java小白到收获BAT等offer,分享我这两年的经验和感悟

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

  7. 20155202 《Java程序设计》实验二(面向对象程序设计)实验报告

    20155202 <Java程序设计>实验二(面向对象程序设计)实验报告 代码托管 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉 ...

  8. Java小白手记2:一些名词解释

    看到<Java 征途:行者的地图> ,这是一篇有关java学习路径文章.对我等Java小白有指引作用.里面提到了一些基本的名词术语,有些我知道,有些不知道,再补上一些自己曾觉得模糊的,记录 ...

  9. 1、Java小白之路前言

    大二一年准备好好学习Java,养成一个良好的习惯写博客,但是由于各种各样的原因,并没有坚持下来.而正好又赶上大三结束,去实习,发现自己的基础还是有些薄弱,所以决定,重新走上这条Java小白之路. 时隔 ...

随机推荐

  1. 安卓微信端打开H5页面背景图被键盘挤压移动位置解决

    问题:在微信端(安卓浏览器也如此)打开的H5登录页面中,点击输入信息,弹出软键盘会挤压背景图片. 本来的body宽高设置body{width:100%,height:100%},不起作用,这样写就会导 ...

  2. Jmeter笔记(Ⅱ)使用Jmeter实现轻量级的接口自动化测试

    接口测试虽然作为版本的一环,但是也是有一套完整的体系,有接口的功能测试.性能测试.安全测试:同时,由于接口的特性,接口的自动化低成本高收益的,使用一些开源工具或一些轻量级的方法,在测试用例开发的成本不 ...

  3. Intellij IDEA 配置Tomcat远程调试

    一.前言 在服务器端开发过程中,由于服务器环境差异导致运行结果不符合预期. 所以就需要到IDEA Debug 服务器代码.看起来貌似很高大上的事情. 今天就说说使用Intellij IDEA 配置的方 ...

  4. 【速读】——ResNeXt

    Saining——[arXiv2017]Aggregated Residual Transformations for Deep Neural Networks 目录 作者和相关链接 主要思想 Res ...

  5. 《ASP.NET Core In Action》读书笔记系列一 ASP.NET Core 的诞生

    最近打算系统学习一下asp.net  core ,苦于没有好的中文书藉,只好找来一本英文的 <ASP.NET Core In Action>学习.我和多数人一样,学习英文会明显慢于中文.希 ...

  6. pthread_cond_wait虚假唤醒

    pthread_cond_wait中的while()不仅仅在等待条件变量前检查条件cond_is_false是否成立,实际上在等待条件变量后也检查条件cond_is_false是否成立.在多线程等待的 ...

  7. Literal绑定数据

    前台: <asp:Literal ID = "ChiCunShow" runat = "server"></asp:Literal> 后 ...

  8. 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 ...

  9. 使用laraval框架和前端完成restful风格的请求对接(这里只是讨论restful的概念)

    现在,在开发中restful风格的api是比较流行的,尤其是在前后端分离的架构中. 这些东西这一下这篇文章中说的很详细:RESTful接口设计原则和优点 下面,我们来讨论如何使用laraval和前端完 ...

  10. C语言实例:类型转换

    数组转换成16进制数: #include <stdio.h> #include <stdlib.h> typedef unsigned char UINT8; typedef ...