java基础之类与对象
[类 & 对象]
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基础之类与对象的更多相关文章
- 第31节:Java基础-类与对象
前言 Java基础-类与对象,方法的重载,构造方法的重载,static关键字,main()方法,this关键字,包,访问权限,类的继承,继承性,方法的重写,super变量. 方法的重载:成员方法的重载 ...
- Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream)
Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我已经分享过很多的J ...
- Java基础-IO流对象之随机访问文件(RandomAccessFile)
Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...
- Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)
Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内存 ...
- Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)
Java基础-IO流对象之数据流(DataOutputStream与DataInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据流特点 操作基本数据类型 ...
- Java基础-IO流对象之打印流(PrintStream与PrintWriter)
Java基础-IO流对象之打印流(PrintStream与PrintWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.打印流的特性 打印对象有两个,即字节打印流(P ...
- Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream)
Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.对象的序 ...
- java基础-IO流对象之Properties集合
java基础-IO流对象之Properties集合 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Properties集合的特点 Properties类表示了一个持久的属性集. ...
- Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader)
Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符缓冲流 字符缓冲流根据流的 ...
- Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream)
Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我们学习字 ...
随机推荐
- ASP.net里不让浏览器缓存代码和Session使用注意事项
//不让浏览器缓存 context.Response.Buffer = true; context.Response.ExpiresAbsolute = ...
- ubuntu14.04 64位 安装JDK1.7
ubuntu14.04 64位 安装JDK1.7 1 新建文件夹 youhaidong@youhaidong:~$ sudo mkdir /usr/lib/jvm 2 解压文件 youhaidong@ ...
- Docker 小记 — Compose & Swarm
前言 任何相对完整的应用服务都不可能是由单一的程序来完成支持,计划使用 Docker 来部署的服务更是如此.大型服务需要进行拆分,形成微服务集群方能增强其稳定性和可维护性.本篇随笔将对 Docker ...
- ftp搭建 与http服务访问
Linux安装ftp组件 1 FTP http://jingyan.baidu.com/article/380abd0a77ae041d90192cf4.html安装vsftpd组件 安装完后,有/e ...
- LeetCode 456. 132 Pattern
问题描述 给一组数,判断这组数中是否含有132 pattern. 132 pattern: i < j < k, 且 ai < ak < aj 第一种解法 使用栈来保存候选的子 ...
- Bzoj1899: [Zjoi2004]Lunch 午餐
题面 传送门 Sol 首先显然吃饭久的要排在前面 之后再来分配队伍,设\(f[i][j]\)表示到第\(i\)个人,\(A\)队伍要等\(j\)的最小吃完饭时间 那么就是一个简单的背包吧... # i ...
- [SCOI2005]王室联邦
分块基本没有限制 所以每次大于等于b就分一块 # include <bits/stdc++.h> # define RG register # define IL inline # def ...
- java支付宝开发-01-沙箱环境接入
一.沙箱环境说明 (1)蚂蚁沙箱环境(Beta)是协助开发者进行接口功能开发及主要功能联调的辅助环境.沙箱环境模拟了开放平台部分产品的主要功能和主要逻辑(当前沙箱支持产品请参考“沙箱支持产品列表”). ...
- ssh框架中struts.xml 的配置参数详解
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "- ...
- 求数组中最小的k个数
题目:输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. package test; import java.util.Arra ...