类、对象与方法如何使用(什么是类?什么是对象?什么是方法?)
对象什么是对象?万物皆对象,它包括现实中客观存在的事物,也包括抽象的时间、规则、思维。简单点说,对象具有状态、行为和标识。如果想深入了解面向对象,可以看看我这篇文章:全面化讲解面向对象思想 - 小简博客 (janyork.com)https://blog.janyork.com/index.php/archives/416/类什么是类?具有相同特性和行为的对象组成的集合就是类,JAVA实际中的类就
对象
什么是对象?
万物皆对象,它包括现实中客观存在的事物,也包括抽象的时间、规则、思维。简单点说,对象具有状态、行为和标识。
如果想深入了解面向对象,可以看看我这篇文章:全面化讲解面向对象思想 - 小简博客 (janyork.com)https://blog.janyork.com/index.php/archives/416/
类
什么是类?
具有相同特性和行为的对象组成的集合就是类,JAVA实际中的类就是指一个数据类型。
不理解类也可以看看上面那一篇文章
类是对象的抽象,而对象是类的具体实例。
类与对象的关系:抽象(该抽象是名词)与类的实例化就是对象,对象的共性特征抽象(该抽象是动词)出来就是类。
这样说可能过于书面化,不方便理解
我们举个例子
举例讲解
比如你要买一台PC,你在订单上列出了这台PC的CPU和显卡型号、显示屏的大小、键盘是104还是87位、主机的颜色等等,这所有信息组成在一起就是一个电脑的类,但你只有它的参数并没有一个符合这个要求的实物对象,而当服务员拿出了一台符合这个订单的具体PC时,这个PC就是那个类的具体对象。
也就是说,对象就是给实体,这个实体承载了类
比如,你买一个苹果,苹果有红的又有青的,有甜的又有酸的,有切好的也有没有切好的,还有许多许多的特征,这些特征都指向一个类,苹果类,苹果类里面都是苹果,每个苹果都是一个对象,苹果太多了,我们挑出一个苹果,这个苹果的特征就是类里面的特征,他是个实实在在的实体,而我们所说的“苹果”就是个类,这个类里面有各种各样的苹果,而我们放小,拿着苹果或者指着苹果,说,"这个苹果",那就具体到了一个实体,这个苹果是独一无二的
苹果例子可能对于理解力比较差的人,会难以接受
那我们就换个例子
我们先前说过,万物皆为对象,我们就从自身看透本质,将我们自己作为一个对象
我们应该都知道,人也是一个类,我们将可以直立行走,有独立思维,会使用工具,统称为人,注意是统称
就像物品分类一样,我们将生物分为动物类与植物类,这两个类又可以分出其他的类,比如动物又分为猴类、两栖类、爬行类等等等等,植物也分了花类、草类、果类等等等等,成千上万说不完,说的通俗点(不严谨点)类就是一个具有相同点的对象的集合或者说所有
我也不多讲,我们不要被这些书面语言带入进去,本身所有思想概念都是人创造的,我们从现实出发,类就是分个类别,只要有共同点(共同特征)就可以分类,连垃圾都可以垃圾分类,就连现实中人也可以分三六九等,无非就是按共同点分类,有钱的
+人统称为有钱人,没钱人统称为穷人,学计算机编程的人都可以分为程序员,就跟我们现实世界的类一模一样的理解
类里面的对象太多,我们从中跳出一个具体的,比如:人类中有各种人,我们将挑选范围缩小,人类-中的-中国人类-的-男人类-的-
某一个人(对象),这个直接指定的具体的就是对象
类与对象分析图鉴
面试经验
有位大佬实习找工作遇到个印象较深的基础面试问题:
面试官:男人和女人是同一个类吗?
我:是同一类。
面试官:钢笔和铅笔是同一个类吗?
我:是同一类。
面试官:男人和钢笔是同一个类吗?
我犹豫了3秒钟,
我:不是同一类
面试官:看来你对基础概念理解的还不到位啊
这里,首先你要懂得万物皆对象,对象都是类的实例,而类是对象的抽象。那么我在JAVA中就可以定义男人和钢笔都是A类或B类或C类,而这个类可以是描述都是看的见或摸的着的特征,亦或是什么都不描述的但就是用来实例化男人和钢笔的类
(类可以是你随性定义的),即男人和钢笔是同一类。同理,时间和水是一类吗?思维和手是一类吗?都是的。
其实面试官在这也埋了一个坑----没有交代问题的前提条件。我认为完美的答案应该是:“从生活角度讲,男人和女人是同一类,钢笔和铅笔是同一类,但男人和钢笔不是同一类。 从Java中类与对象的关系来说,男人和女人是同一类,钢笔和铅笔是同一类,男人和钢笔也是同一类。”
面试官还问过我一个对象问题:
面试官:若我是一个完全不懂IT和编程的人,你能给我解释一下什么是对象吗?
我:在JAVA中,对象就是一类数据的实例化,他们有着一种或几种的相同特征。
面试官:你认为一个普通人听得懂这个吗?你只需要说万物皆对象就好,再举几个生活中的例子,没必要 去背概念。最后,我还是收到了这加公司的Offer,也是我工作生涯所进的第一家公司,也让我认识到了什么叫资产阶级的剥削,当然,这些都是后话了。。。
来源(大佬的CSDN):daponi的博客_CSDN博客
类和对象关系
类(class)和对象(object)是两种以计算机为载体的计算机语言的合称。对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型。
它们的关系是,对象是类的实例,类是对象的模板。对象是通过new classname产生的,用来调用类的方法;类的构造方法 。
Java中的对象和类
我们先前说过,Java是一个面向对现象的编程语言,Java作为一种面向对象语言。支持以下基本概念:
- 多态
- 继承
- 封装
- 抽象
- 类
- 对象
- 实例
- 方法
- 重载
这些概念基本知道就可以,后期会深入说明与学习
类中的变量类型
一个类可以包含以下类型变量:
- 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁
- 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问
- 类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型
一个类可以拥有多个方法
如何创建类?
以Java为例,我们刚开始学习Java,是不是要创建一个.java的文件,这个文件就是类文件,也可以叫class文件,我们开头就是写框架,框架的第一句永远是 public class 类名,这其实就是一个创建类
那么我们就知道,创建类的语法就是这样的:
public class 类名{
//代码块
}
这就是一个类,class后面接的就是类名
对象的创建
作为程序员入门,我们可能都多多少少听过一些专用的黑话(玩笑话语),比如:万物皆对象 new一个对象.....
那么,我们都知道类和对象是什么了,也知道怎么创建类了
那么,如何创建一个对象呢?我们总说,new一个对象,那么创建对象,new肯定是少不了了!
创建对象的语法语句:
类名 对象名 = new 类名();
假设我们定义一个类,叫Apple,那么,我们的创建对象(对象名one)就是:
Apple one = new Apple();
这里如何创建类和对象就讲完了,因为前面啰嗦太多了,我们进度快一点!
我们先前提到了方法,那么方法是什么呢?有什么用呢?
假设我们上方设定了一个苹果类,也就是Apple类,这个苹果类里面,我们定义几个String变量储存它的颜色、形状..等等特征,这就是这个苹果类的属性,也叫成员变量,这个苹果掉下来了、在地上滚动这些就被称为方法!
创建方法
我们刚开始学Java的框架是一个入口,也就是第二句代码:
public static void main(String[] args){
}
这其实就是一个方法,我们也经常听到叫它main方法!
我们将main方法拆开看:
访问修饰符 返回类型 方法名(参数列表)
这就是方法的基本语法了,访问修饰符就是public,返回类型这里是void,方法名自己定义,最后面有个括号(),括号里面可以放参数,也可以不放参数,直接一个空括号,带参数叫有参方法不带参数叫无参方法,我们这里用无参来讲解,方法我另写一篇文章来说明!
方法举例
比如:
我们在Apple类中,创建Apple的两个成员变量
public class Apple {
// 定义成员变量,color储存颜色,smell储存味道
String color;
String smell;
}
我们再在Apple类中创建一个方法,来输出成员变量!
public class Apple {
// 定义成员变量,color储存颜色,smell储存味道
String color;
String smell;
/*
*苹果的味道与颜色方法
*/
public void Attributes(){
System.out.println(color);
System.out.println(smell);
}
}
然后我们新建一个类,类名就叫EatApple(吃苹果)吧!
public class EatApple {
public static void main(String[] args) {
// 创建苹果1(对象)
Apple apple1 = new Apple();
// 创建苹果2(对象)
Apple apple2 = new Apple();
}
}
注意:我们这里是程序的入口,所有必须是mian方法类名来创建对象!
我们这里创建了两个对象
但是我们Apple类中的两个成员变量还是初始值(String初始值为空):
String color;
String smell;
我们这一个是颜色,一个是味道,我们给apple1和apple2填上属性值,格式是:对象名.成员变量名 = ...;=号后面就和赋值一样,这个应该不要讲吧!
public class EatApple {
public static void main(String[] args) {
Apple apple1 = new Apple();
apple1.color = "红色";
apple1.smell = "甜";
Apple apple2 = new Apple();
apple2.color = "青色";
apple2.smell = "酸";
}
}
然后我们的Apple类中还有应该方法,用来输出颜色和味道这两个属性,我们给apple1和apple2调用一下
public class EatApple {
public static void main(String[] args) {
// 创建苹果1(对象)
Apple apple1 = new Apple();
// 对象1调用苹果类成员变量
apple1.color = "红色";
apple1.smell = "甜";
// 调用苹果属性方法
apple1.Attributes();
// 创建苹果2(对象)
Apple apple2 = new Apple();
// 对象2调用苹果类成员变量
apple2.color = "青色";
apple2.smell = "酸";
// 调用苹果属性方法
apple2.Attributes();
}
}
这样,这个程序就写好了!给你们看看效果:
代码效果
简洁讲解总结
类=一个种类(class)东西
对象=属于该种类的一个对象/物件(object,台湾翻译为‘物件’)
方法=对这个种类的东西都可以进行的操作
比如
我有一辆汽车
public class car {...}
我将这辆汽车起名为”火焰“
car myCar = new car("火焰");
所有的汽车都可以加速(accelerate)和刹车(brake)
public class car
{
void accelerate() {...}
void brake() {...}
}
我可以指定让我的汽车加速
myCar.accelerate();
但虽然都是汽车,我的车和小王的车不是同一辆。
注意:myCar != wangCar
扩展举例讲解
类:狗这类动物
方法:狗会吠 ,狗会摇尾巴 等等
对象:某一条狗
封装:你只需知道狗会吠就好,无需知道它为什么可以吠,喉咙和舌头怎么运作也不需要知道
继承:狗类继承自犬类,狼类继承自犬类,他们都吃肉,都能跑,这些都是犬类的方法
多态:虽然狼和狗都继承自犬类,但狗类实现了听主人话接口接口,狼类实现了嗷嗷叫接口接口,所以他们就呈现出多态。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)