[类 & 对象]
1、类:具有一系列相同属性(特征)和方法(行为)的个体的集合,称为类。
类是一个抽象的概念,只能说类具有哪些属性,而不能直接对属性进行赋值。
例如:人类有身高的属性,但是不能说人类的身高是180

2、对象:从类中拿出具有具体属性值的个体,称为对象。
对象是从类中拿出的一个具体的个体,需要对属性进行具体的赋值。
例如:人类有身高的属性,那么张三是人类中的一个个体,就可以说张三的
身高180, 此时张三就是人类的一个对象。

3、类与对象的关系:
类是对象的抽象化,对象是类的具体化。
类是对象的描述,对象是类的个体(实例)。
程序中由类产生对象。
面向对象的三大特征:继承、封装、多态。

[类的创建]
1、声明一个类:[访问控制符] class 类名{}
注意类名的命名规范
public class Person {}

2、声明一个属性:[访问控制符] 属性类型 属性名;
public String name;
public int age;

3、声明一个方法:[访问控制符] 返回值类型 方法名(){}
如果没有返回类型,用void代替。
public void say(){
System.out.println("我是人類,我會說話。");
}

4、 构造函数:是类中的一个特殊的方法
①构造函数与类同名
②构造函数没有返回类型,连void也没有!
public Person(){}
public Person(String name,int age){}
[注意]
① 如果没有手动写构造函数,则系统会默认提供一个空参构造
如果一旦手写构造函数,则系统不再提供空参构造

② 构造函数无需手动调用,而是在实例化对象时,自动调用。

③ 构造函数的作用:在实例化对象时,给类的属性赋默认值

④ 习惯上写一个空参构造(可以创建一个空对象,无需写参数)和全参构造。

[使用类和对象的步骤]
① 声明一个类
public class Person {
public String name="张三";//属性
public int age=12; //方法

}

② 在需要调用类的main方法中,使用new关键字拿到对象(对象的实例化)
Person p=new Person();

③ 使用对象名.方法名()或对象名.属性名,可以调用类中的属性和方法
p.say(); //调用方法
System.out.println(p.name);//调用属性

[方法的返回值]
① 如果方法有返回值,可以使用return返回结构
② 如果方法没有返回值,需要设置返回值为void,而且方法中必须没有return
③ 有返回值的方法,调用时不一定接收返回值。
④ 没有返回值的方法,调用时一定不能接收返回值

[方法的调用]
① 声明的方法,只有在调用的时候才能执行方法体中的代码
②方法的调用:
>>>在本类的其他方法中调用,使用 方法名(); 或者使用 this.方法名();
public void eat(){
System.out.println("调用eat方法");
this.say();
}

>>>调用其他类中的方法,首先应该实例化对象,再使用 对象名.方法名();调用
Demo02_Method dm=new Demo02_Method();
dm.say();

[方法的参数]
① 声明方法时:可以在()中设置调用方法时需要的传入的参数列表,多个参数之间用逗号分隔;
public void eat(String food,int count){}

声明方法时的参数列表,称为形参列表;

② 调用方法时传入的参数类型必须与形参类型一一对应。
dm.eat("鸡蛋",3);

调用方法时的参数列表,称为实参列表;

[成员变量与局部变量]
① 成员变量:写在方法体外面,直接在类中声明的变量
成员变量在整个类中可以使用
② 局部变量:在方法体里面声明的变量
局部变量只在当前方法体中有效,方法的形参列表,都属于局部变量。

③ 成员变量与局部变量的区别:
⑴作用域不同: 成员变量在整个类中可以使用,局部变量只在当前方法体中有效;
⑵初始值不同:java中,成员变量会默认赋初始值,局部变量没有默认初始值
⑶ 优先级不同:当成员变量与局部变量重名时,在方法中优先使用局部变量
如果需要使用成员变量则必须用 this.成员变量;

[类的使用原则]

一个完整的程序将分为三个部分,基本数据,对数据的各种操作,数据的测试。所以完整的java程序包含三种类:

数据类:类中只包含属性以及构造方法;

数据操作类:无属性及构造方法,只有自己写的各种对数据进行操作的各种方法。

测试类:main方法的所在类,在里面进行类的实例化,根据不同的需求,调用不同的对象方法,实现面向对象。

java基础之类与对象的更多相关文章

  1. 第31节:Java基础-类与对象

    前言 Java基础-类与对象,方法的重载,构造方法的重载,static关键字,main()方法,this关键字,包,访问权限,类的继承,继承性,方法的重写,super变量. 方法的重载:成员方法的重载 ...

  2. Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream)

    Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我已经分享过很多的J ...

  3. Java基础-IO流对象之随机访问文件(RandomAccessFile)

    Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...

  4. Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)

    Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内存 ...

  5. Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)

    Java基础-IO流对象之数据流(DataOutputStream与DataInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据流特点 操作基本数据类型 ...

  6. Java基础-IO流对象之打印流(PrintStream与PrintWriter)

    Java基础-IO流对象之打印流(PrintStream与PrintWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.打印流的特性 打印对象有两个,即字节打印流(P ...

  7. Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream)

    Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.对象的序 ...

  8. java基础-IO流对象之Properties集合

    java基础-IO流对象之Properties集合 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Properties集合的特点 Properties类表示了一个持久的属性集. ...

  9. Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader)

    Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符缓冲流 字符缓冲流根据流的 ...

  10. Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream)

    Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我们学习字 ...

随机推荐

  1. but the supplied types were (flex.messaging.io.amf.ASObject) and converted to (null)."

    1.错误描述 [RPC Fault faultString="Cannot invoke method  'saveOrUpdate'. " faultCode="Ser ...

  2. Error:Error #2174

    1.错误描述 Error:Error #2174 : 对于每个FileReference,每次只能执行一个下载.上载.加载或保存操作 2.错误原因 Flex中,在做单文件上传时,多次点击"上 ...

  3. GitHub 错误解决

    1. The file will have its original line endings in your working directory. git config --global core. ...

  4. centos 7 安装VCL播放器

    centos 自带播放器MP4都无法播放,因此安装VCL播放器 安装epel和remi的repository sudo yum localinstall --nogpgcheck http://dl. ...

  5. maven项目转eclipse

    很多国外的开源项目是用maven编译的,对于我们比较熟悉eclipse开发的童鞋来说,能转成.project是最好不过了. 很简单,装好maven后,在项目目录打开命令行,输入 mvn eclipse ...

  6. Eclipse远程debug服务器

    一,找端口号 二,Eclipse配置 三,测试是否成功 四,结束远程debug

  7. C#图解教程 第十四章 事件

    事件 发布者和订阅者源代码组件概览声明事件订阅事件触发事件标准事件的用法 通过扩展EventArgs来传递数据移除事件处理程序 事件访问器 事件 发布者和订阅者 很多程序都有一个共同的需求,既当一个特 ...

  8. link-cut-tree 简单介绍

    link-cut-tree 简单介绍 前言:这个算法似乎机房全都会,就我不会了TAT...强行搞了很久,勉强照着别人代码抄了一遍qwq 这个本人看论文实在看不懂,太菜了啊!!! 只好直接看如何实现.. ...

  9. 【BZOJ1212】L语言(AC自动机)

    [BZOJ1212]L语言(AC自动机) 题面 BZOJ 题解 很自然的,既然要匹配单词,那就全部都丢到\(AC\)自动机里面去 现在想想怎么匹配 先是\(AC\)自动机正常的匹配 如果此时这个位置能 ...

  10. iptables 学习

    本博客是学习慕课网课程 用iptables搭建一套强大的安全防护盾 整理而成 iptables相当于在ip层挂载一个hook point对用户进行控制 组成: 四张表+ 五条链(hook point) ...