1.类的概念

  在生活中,说到类,可以联想到类别,同类,会想到一类人,一类事物等等。而这一类人或事物都是具有相同特征或特点和行为的,我们根据不同的特征或特点和行为将他们归类或分类。同时,当我们认识一个新事物的时候,我们一般来说是从过往的事物中总结事物的特点(特征),并比对新事物,把新事物进行归类,以达到认识新事物。

  在Java程序中,类是对一组具有相同特征和行为的对象的抽象描述。可以看出和生活中对类的定义很像。但是在Java程序中,我们将其相同的特征称为属性,行为则称为方法。 

  理解:

    [1] 类包含了两个要素:特性和行为 => 同一类事物具有相同的特征和行为。

    [2] 类是一个群体性概念。例如:网红、明星、草根、宅男、萝莉

    [3] 类可以理解为现实生活中所说的 “类型”

  引入类的作用:在程序中,引入类的概念,就是为了快速生成更多的具有相同特性和行为的事物。

2.对象的概念

  对象是类的具体实现,表示一个独立的、唯一的个体。

  理解

  [1] 对象是通过类生成的。对象一定具备该类的特性和行为。

  [2] 对象是个体。类是群体。=> 对象是独立的、唯一的。=> 属于同一类型的对象也是相互独立的。

3.类和对象的区别

  类是抽象的,是一个群体概念。对象是具体的,是一个独立个体。

  一个独立的对象一定属于某个类。理解为类包含对象

4.属性和方法

4.1属性  

  类或者对象具有的特征在程序中称为属性(property/attribute)

  具体对象的属性拥有的数据称为属性值。

  属于同一类对象都具有相同的属性,但各个对象都拥有各自的属性值。这些属性值区分了不同的对象。

4.2方法

  类或者对象的行为称为方法(Method),可以理解为:一个对象在类中可以做很多东西,能做什么在类里面就叫做方法。

  例如:定义一个猫类,猫类中有一个对象加菲猫,加菲猫可以做很多事情如:吃,喝,睡觉,这些在类中称为方法。

5.定义类和方法

  开发者可以根据需要自定义类,语法

[修饰符] class 类名{
属性
方法
}

案例:定义一个类,实例化对象

 public class SuperHero{
//声明类的属性
String name;
int age;
char gender;
String skill;
//声明类的方法 public void hit(String kname){
System.out.println("我"+name +kname+"打灭霸");
} public void showInfo(){
System.out.println("年龄"+age);
System.out.println("性别"+gender);
System.out.println(skill);
System.out.println("我!"+name+"打钱!");
}
}
 public class Test01{
public static void main(String[] args){
SuperHero thor = new SuperHero();//创建对象,实例化过程
//给属性赋值(.语法)
thor.name = "雷神";
thor.gender = '男';
thor.skill = "飞,放电";
//调用方法
thor.hit("用个锤子");
thor.showInfo(); System.out.println();
SuperHero amercaMan =new SuperHero();
//给属性赋值(.语法)
//amercaMan.name = "美国队长";
//amercaMan.gender = '男';
//amercaMan.skill = "盘他 ";
//调用方法
amercaMan.hit("用个盘子");
amercaMan.showInfo();
}
}

5.1.局部变量和成员变量

  局部变量:在方法或者语句块中声明的变量称为局部变量,语句块就是作用域。

  局部变量在其所在的作用域有效,出了作用域就无效。

  作用域可以嵌套,内部作用域可以访问外部作用域的变量。

 public void learn(String cName){
// 方法中定义的局部变量
System.out.println(name+" learn "+cName); // 语句块中定义局部变量
{
int count = ;
System.out.println(" count "+count);
System.out.println("cname"+cName);
} // System.out.println(" count "+count);
}

成员变量:在方法外部,类的内部定义的变量称为类的成员变量,简称成员变量。有些地方把属性称为filed(字段)

成员变量必须通过类的实例/对象调用,例如 stu.name ,有时成员变量也称为实例变量。

成员变量 == 属性 == 字段 == 实例变量

类中包含两个成员:成员变量和成员方法。

5.2属性的声明

[修饰符] 属性类型 属性名称  [=默认值]

在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。(数值:0,0.0   char:\u0000,  boolean:false,  所有引用类型:null)

属性/成员变量的作用域范围是整个类体。

6.面向对象编程思维

  面向对象编程(oop),把一切都看出对象,通过类构造对象,java程序都是通过class类组织的。

  所谓面向对象通过类构造对象,使用对象完成需求。

  需求:用手机播放一首歌曲

  

 public class Phone{

     String brand;
String type;
float price; public void showInfo(){
System.out.print("品牌:"+brand);
System.out.print(",型号:"+type);
System.out.println(",价格:"+price);
} public void play(Music music){
System.out.println("正在用"+brand+type+"播放<<"+music.name+">>歌曲");
music.showInfo();
}
}
 public class Music{

     String name;
String actor;
int times;
String content; public void showInfo(){
System.out.println("-- "+name+" --");
System.out.println("演唱者:"+actor); int h = times / 3600;
int m = times % 3600 / 60;
int s = times % 60; System.out.println("时长:"+h+":"+m+":"+s);
System.out.println(content);
}
}
 public class Test01{
public static void main(String[] args){ Music music = new Music();
music.name = "向天再借五百年";
music.actor = "韩磊";
music.times = 356;
music.content = "沿着江山起起伏伏温柔的曲线,\n放马爱的中原爱的北国和江南"; Phone phone = new Phone();
phone.brand = "Apple";
phone.type = "iPhone XR";
phone.price = 5999.0f; phone.play(music); }
}

总结:

  面向对象编程就是完成一个复杂的需求需要各个对象之间相互配合完成。对象的创建需要定义类型,java程序就是通过类来组织程序的。

  java中一切都是对象。

7.抽象

7.1抽象的概念

 根据业务中的对象抽象成计算机可识别的类,简单的说就是抽出各个对象像的部分。

  抽象的步骤

  [1] 发现类(归类)。类一般用名词。

  [2] 发现类的属性(特征)。属性一般用名词。发现类的属性时,一般只放和业务相关的属性。

  [3] 发现类的方法(行为)。方法一般是动词。只放和业务相关的方法。

  抽象一个下载类。

  [1] DownLoad类

  [2] url/name/size/progress/type/location…

  [3] start()/pause()/stop()/delete()…

7.2类图

  类图可以让开发者更直观地创建类。

  

  + public / – private

  https://www.processon.com

Java面向对象——类,对象和方法的更多相关文章

  1. Java面向对象-类与对象

    Java面向对象-类与对象 类与对象的关系 我们通俗的举个例子,比如人类是一种类,张三这个人就是人类的具体的一个个体,也就是java中的对象:这就是一个类与对象的关系: 类的定义 下面看实例 类的创建 ...

  2. 理解JAVA - 面向对象(object) - 属性,方法

    理解JAVA - 面向对象(object) - 属性,方法 多态的体现:    向上造型,父类接收子类对象:向上造型:    从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...

  3. Java面向对象 其他对象

     Java面向对象  其他对象 知识概要:             (1)可变参数 (2)静态导入 (3)System (4)Runtime (5)Date  Calendar (6)Math 本 ...

  4. Java中类,对象,方法的内存分配

    Java中类,对象,方法的内存分配 以下针对引用数据类型: 在内存中,类是静态的概念,它存在于内存中的CodeSegment中. 当我们使用new关键字生成对象时,JVM根据类的代码,去堆内存中开辟一 ...

  5. Java面向对象——类的成员

    Java面向对象——类的成员 摘要:本文主要介绍了类的常见成员. 属性 属性称为成员变量,一般来讲不用赋值,因为有默认值,另外显式赋值没有意义会导致所有由此类创建对象都是此值. 默认值 Boolean ...

  6. Python的高级特性8:你真的了解类,对象,实例,方法吗

    Python的高级特性1-7系列是本人从Python2过渡3时写下的一些个人见解(不敢说一定对),接下来的系列主要会以类级为主. 类,对象,实例,方法是几个面向对象的几个基本概念,其实我觉得很多人并不 ...

  7. Java AtomicInteger类的使用方法详解_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 首先看两段代码,一段是Integer的,一段是AtomicInteger的,为以下: public class Samp ...

  8. 第4篇-JVM终于开始调用Java主类的main()方法啦

    在前一篇 第3篇-CallStub新栈帧的创建 中我们介绍了generate_call_stub()函数的部分实现,完成了向CallStub栈帧中压入参数的操作,此时的状态如下图所示. 继续看gene ...

  9. 第29篇-调用Java主类的main()方法

    在第1篇中大概介绍过Java中主类方法main()的调用过程,这一篇介绍的详细一点,大概的调用过程如下图所示. 其中浅红色的函数由主线程执行,而另外的浅绿色部分由另外一个线程执行,这个线程最终也会负责 ...

  10. android NDK 实用学习(三)- java端类对象的构造及使用

    1,读此文章前我假设你已经读过: android NDK 实用学习-获取java端类及其类变量 android NDK 实用学习-java端对象成员赋值和获取对象成员值 2,java端类对象的构造: ...

随机推荐

  1. python2 安装 MySQL-python

    yum -y install mysql-devel libxml2 libxml2-dev libxslt* zlib gcc openssl yum install gcc libffi-deve ...

  2. kettle使用文件导入到Postgresql出现如下几种问题的总结

    1.kettle使用文件导入到Postgresql出现如下几种问题的总结: kettle使用文件导入到Postgresql出现如下几种问题的总结: .第一种错误,报错如ERROR: extra dat ...

  3. std::array中的std::get<n>()

    模板函数std::get<n>()是一个辅助函数,它能够获取到容器的第 n 个元素.模板参数的实参必须是一个在编译时可以确定的常量表达式,编译时会对它检查. get<n>()模 ...

  4. [CF662C] Binary Table(FWT)

    题意: https://www.cnblogs.com/cjyyb/p/9065801.html 题解:

  5. ios 修改导航栏返回按钮的图片

    修改导航栏返回按钮的图片 方法1: [UINavigationBar appearance].backIndicatorTransitionMaskImage = [UIImage imageName ...

  6. eclipse向tomcat部署站点发现没有class文件。

    其实大部分解决办法在网上都有的,例如这里: https://blog.csdn.net/shiyuehit/article/details/53262807 eclipse下无法自动编译或编译失败等问 ...

  7. spark算子

    1.map 一条一条读取 def map(): Unit ={ val list = List("张无忌", "赵敏", "周芷若") va ...

  8. 如何在webpack中成功引用到图片?

    打包图片时,你可曾遇到在产出目录文件夹找不到图片,即便找到了,但是页面说引用不到资源?页面上或者文件中引用的图片地址不对? 一.在webpack中引入图片需要url-loader //webpack配 ...

  9. [LeetCode] Generate Random Point in a Circle 生成圆中的随机点

    Given the radius and x-y positions of the center of a circle, write a function randPoint which gener ...

  10. git开发过程中的使用流程

    001.创建仓库 002.新建项目 003.初始化仓库  这一步不需要做 git init : 文件夹中会多出一个隐藏的.git文件 004.克隆项目 git clone <项目地址> 0 ...