[类 & 对象]
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. Centos运行Mysql因为内存不足进程被杀

    今天刚刚申请了一个新的域名,在申请完域名刚准备绑定给小伙伴分享注册新域名的喜悦时,刚把网站发到我们小伙伴们的讨论群里,却发现访问不了了,提示,数据库连接失败! 真的时一个尴尬.....    所有人都 ...

  2. GAN 转

    生成式对抗网络(GAN)是近年来大热的深度学习模型.最近正好有空看了这方面的一些论文,跑了一个GAN的代码,于是写了这篇文章来介绍一下GAN. 本文主要分为三个部分: 介绍原始的GAN的原理 同样非常 ...

  3. 【BZOJ3730】震波(动态点分治)

    [BZOJ3730]震波(动态点分治) 题面 BZOJ 题意 给定一棵树, 每次询问到一个点的距离\(<=K\)的点的权值之和 动态修改权值, 强制在线 题解 正常的\(DP\)??? 很简单呀 ...

  4. [Luogu3676]小清新数据结构题

    题面戳我 题意:给一棵树,树上有点权,每次操作为修改一个点的点权,或者是询问以某个点为根时,每棵子树(以每个点为根,就有n棵子树)点权和的平方和. \(n\le2*10^5\),保证答案在long l ...

  5. APIO2010特别行动队

    斜率优化 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <s ...

  6. iOS开发--XMPPFramework--框架的导入(二)

    创了一个XMPP即时通讯交流群140147825,欢迎大家来交流~我们是一起写代码的弟兄~ xmpp协议开发即时通讯,最常用的就是XMPPFramework. 第一种方法,是直接拖进项目 1.可以下载 ...

  7. MySQL性能调优与架构设计

    1.Scale(扩展):从数据库来看,就是让数据库能够提供更强的服务能力 ScaleOut: 是通过增加处理节点的方式来提高整体处理能力 ScaleUp: 是通过增加当前处理节点的处理能力来提高整体的 ...

  8. centos7下搭建 MongoDB -01

    距离上次写的一篇mongoDB搭建已经有一年多的时间了,刚好这次在公司搭建好在centos7下的mongodb搭建,简单的做一个记录吧 mongo 是一个基于分布式文件存储的数据库,数据主要存储在磁盘 ...

  9. webstorm修改工具栏主题

    ** 操作如图所示 **

  10. 基于 HTML5 WebGL 的 3D 机房

    前言 用 WebGL 渲染的 3D 机房现在也不是什么新鲜事儿了,这篇文章的主要目的是说明一下,3D 机房中的 eye 和 center 的问题,刚好在项目中用上了,好生思考了一番,最终觉得这个例子最 ...