[类 & 对象]
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. web开发性能优化---代码优化篇

    1.合理使用缓存使用 提高性能最好最快的办法当然是通过缓存来改善,对于任何一个web开发者都应该善用缓存.Asp.net下的缓存机制十分强大,用好缓存机制可以让我们极大的改善web应用的性能. 1.页 ...

  2. Web站点错误提示页面和默认访问页面设置

    1.asp.net 定制简单的错误处理页面 通常web应用程序在发布后,为了给用户一个友好界面和使用体验,都会在错误发生时跳转至一个自定义的错误页面,而不是asp.net向用户暴露出来的详细的异常列表 ...

  3. 让微信,qq,uc浏览器使用全屏模式,全屏模式里,浏览器是不会上下左右滑动出现背景的

    <meta name="x5-fullscreen" content="true"> <meta name="full-screen ...

  4. http协议的补充二

    一,浏览器到服务器request 1.1,浏览器里面的内容 请求(浏览器->服务器) GET /day09/hello HTTP/1.1 Host: localhost:8080 User-Ag ...

  5. Centos7.2 搭建Lamp服务器以及迁移WordPress个人博客详细过程

    其实自己的博客搭了有段时间了,但是由于自己不太确定是不是一定要用wd的框架,以及实验室公网服务器的不稳定,就一直荒废着. 今天偶然间看到了腾讯云对于学生的优惠活动,毕业之前每月只要8元的云服务器(就算 ...

  6. jquery 实现一个简单的成功提示框,失败提示框

    主要的jquery代码:var TS={ successAlert:function(str){ //调用成功的方法 var html='<div class="alert alert ...

  7. 关于transform的3D变形函数

    继续transform的3D用法: translate3d(x,y,z)定义3D转换 transformX(x)只用x轴的值进行转换: transformY(y)只用y轴的值进行转换: transfo ...

  8. 【BZOJ4237】稻草人(CDQ分治,单调栈)

    [BZOJ4237]稻草人(CDQ分治,单调栈) 题面 BZOJ 题解 \(CDQ\)分治好题呀 假设固定一个左下角的点 那么,我们可以找到的右下角长什么样子??? 发现什么? 在右侧是一个单调递减的 ...

  9. 【BZOJ3675】序列分割(斜率优化,动态规划)

    [BZOJ3675]序列分割(斜率优化,动态规划) 题面 Description 小H最近迷上了一个分隔序列的游戏.在这个游戏里,小H需要将一个长度为n的非负整数序列分割成k+1个非空的子序列.为了得 ...

  10. [ZJOI2007]时态同步

    题目描述 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3….进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何两个节点 ...