类和对象的关系
类实质上定义的是一种对象类型,他是对具有相似行为的对象的一种抽象,广义上说就是对象的集合,比如说,众多的人组成人类,人就是人类这个类的实例化,再比如,找女朋友这个问题上,女朋友是一个类,这个类具有女性,肤白貌美的属性,将女朋友这个类实例化就是确定到某一个人了。类是对象的抽象表现,对象是类的具象,ps:对象不止一个.
封装的概念
概念:把相关的数据及其操作组织在类内,构成独立意义的构件(组件),称为封装。
比如:生活中的各种控制开关,遥控器,都用到类的封装,他们把这些功能封装在一个小盒子里,在操作时,只需要按控制键,不需要知道怎么去工作的,对外只是表现为封装体系间的接口关系。包概念的体现了封装性,将一组类封装在一个包内。
封装基本单位:
对象
类的创建
类有2中基本成分:变量和方法,变量可以使是基本类型,是数组,也可以是实例,方法负责处理这些变量,【方法中变量只能在类中定义,类的方法一般是public 类的变量一般是private】
比如创建一个女朋友的类
public class girlfriend
{
private float shengao;
private float sanwei;
private int age;
private float weight;
以上是对这个类进行属性的定义【身高,三围,年龄,定义为私有,不能随随便便被人知道吧】
有了成员变量,得有成员方法来处理这些变量,女生大都爱吃,就定义一个吃的方法
void eat(){
System.out.println("l like eating")
}
方法定义完成后就开始调用这个方法,前提是你得有个女朋友。【也就是类的实例化】
public static void main(String args[])//主函数入口
{
girlfriend mm=new girlfriend();//类的实例化,女朋友有了,叫mm。
mm.eat();调用这个方法//使用女朋友的功能
}
}
注意事项:
访问对象方法/属性。如果是静态方法/属性,是带有static关键字的属性,可以直接通过类名来访问
Java程序执行过程分析,一张图告诉你
举个栗子:
源文件:鲜活的鱼
编译器:刀具
字节码文件:被杀的鱼
解释器:炊具
工程:鲜美的鱼汤
方法的分类
1类方法【静态方法,带有static的关键字的方法】
2.实例方法,用户自己写的方法【自定义方法】
3.构造方法【方法名与类名一模一样】
声明方法常用格式
访问修饰符 返回类型 方法名(参数列表){
方法体
}
带有final的关键字的方法,表名该方法不能被重载,也不能被覆盖
方法重载
概念:多个方法名相同,参数不同【在一个类中】
参数不同体现在以下2点
1.参数类型相同,个数不同
2参数个数相同,类型不同
方法调用
1,非静态 对象名.方法名();
2,静态 对象名/类名.方法名();
方法与方法之间的调用
1.在本类中,静态方法直接调用静态方法,直接写方法名即可
2.在本类中,静态调用非静态方法,就必须通过对象来调用【对象名.方法()】
3.在不同类中,静态调用其他类中静态方法 方法【类名.静态方法名.()】
4.在不同类中,静态调用其他类中非静态方法 需要导入被调用的类中的包,以及通过创建对
象调用【在调用主类中创建从类中的对象调用】调用的类称主类,被调用的称从类 容易曲分
非静态方法内部调用
1.在本类中,非静态方法可以直接调用非静态方法
2.在不同类中非静态方法调用其他类静态方法,需要导入被调用类中的包,并且需要通过类名来调用
3.在不同类中 ,非静态调用其他类中非静态方法 ,需要导入被调用的类中的包,以及通过创建对象调用【在调用主类中创建从类中的对象调用】调用的类称主类,被调用的称从类 容易曲分。
方法参数及其传递问题
Java中只有值传递,不存在引用传递
值传递:
1.基本类型传递:在栈道中分配内存,在传入时,实参会多复制一份,在方法内修改参数不影响原实参。
2.引用类型传递【不是引用传递】这里看代码
方法递归
所谓递归,就是方法调用自身,但不会无休止调用下去,这里遵循条件。要想使用递归,遵寻下面要求;
1.必须满足一个结束条件
2.方法调用自身
类的属性
1.全局变量【定义在类中 在方法外面,类中的方法都可以访问它】
2.局部变量【定义在类中,某个方法里,只有这个方法可以访问】
this关键字
接地气来说,this指的是当前对象,至于哪个对象,只有在运行期间才能知道是哪一个对象
最后来说说包
咱要说的包可不是书包,背包,LV包,要说的是Java中的包。
怎么说呢 ,比如,在电脑上创建文件夹,对文件进行分类,分成视屏,音乐,照片,学习资料,当然还有苍老师,这就是对文件分文别类,Java中的包就起到类似文件夹的作用,主要给class分类的工作。便于维护管理。
包名的定义:package com.canglaoshi
用包导入类型
1.导入包中所有的类
import 包名.*;
2.导入包中具体的类
import 包名.类名
3.编辑包
{
1.javac -d.类名.java
d:创建目录
" . ":当前目录 比如编辑一个女朋友类 Javac -d. girlfriend.java
如果在类中是这样去定义一个包【package com.women.meimv;】
那么就可以在com的文件夹下的women的文件下的entity文件夹下找到 girlfriend.java 文件
2.Java 包路径/类名【了解即可】
}
包名规范
建议全部小写,不管有多少个单词组成