类
1、什么是类?
含义1:类--类型--数据类型--复合数据类型--自定义复合数据类型
基本数据类型就8种,在开发中远远不够,所以我们就需要一个可以根据自己的需求随时能制作出一个自己需要的数据类型。
含义2:类--将性质或特征相同的元素抽象出来的元素
类就是用java语言描述性质或特征相同的元素抽象出来的自定义复合数据类型
2、创建java类
通过class关键字创建java类
格式:【public】 class 类名{}
【public】--访问限制修饰符
class --- 创建类的关键字,是类的标志
类名---首字母大写
{}-----类体,放的内容具有性质或特征相同的元素
public class Student{} //任何地方都可以访问
class Person{} //只能被同一个包中的类访问
3、 Java类体{}中可以编写什么?
{}-- 放的内容具有性质或特征相同的元素
具有性质或特征相同的元素是用来描述某一组事物。
如何描述一个具体的事物?
例如:自我介绍
名字,地址,年龄---基本属性
工作,爱好 ------基本功能
我们在描述一个具体的事物时是通过从基本属性和基本功能开始的。
{}-- 某一组事物的相同基本属性和相同基本功能
{}---属性和功能
{}---变量和方法
4、 java类中的变量
1.变量的本质就是保存数据
2.变量组成有 1.数据类型[基本/复合] 2.变量名称【全字母小写】
3.初始值 4.作用域【有效范围】
3.变量用来描述事物的基本属性
4.变量一定定义在类中
5.变量的分类
5.1 类中方法外---全局变量【成员变量】
5.1.1 可以使用访问限制修饰符【public 缺省的{友好的}】
5.1.2 可以不用赋予初始值,系统自动赋予默认值,也可以根据需要自己设置 一个初始值。
5.1.3 可以在本类中【除静态方法】的外任意一个方法中被使用
package com.lianxi.demo;
import com.sun.org.apache.xpath.internal.functions.FuncQname;
public class Test1 {
//全局变量【成员变量】
public String name="zhangsan";
String address;
//构造方法
public Test1(){
//System.out.println(name);
//System.out.println(address);
};
//实例方法
public void method1(){
//System.out.println(name);
//System.out.println(address);
};
//静态方法/类方法(不可调用全局变量【成员变量】)
public static void method2(){
//System.out.println(name);
//System.out.println(address);
};
}
5.2 类中方法里【方法参数】---局部变量
5.2.1.不能使用访问限制修饰符。
5.2.2.必须设置初始值
5.2.3.只能在本方法中使用。
/*
创建一个TestClass2的java类
* 类中可以有变量和方法
* 变量---基本属性
* 方法---基本功能
* 类中的变量
* 1.类中方法之外----全局变量【成员变量】
* 2.类中方法里/方法的参数---局部变量
*/
public class TestClass2 {
/*介绍局部变量
1.类中方法里或者方法的参数--局部变量
2.不能使用访问限制修饰符
3.必须有自己设置的初始值
4.只能在当前方法中被调用
*/
//构造方法
public TestClass2(){
String name="lisi"; //类中方法里的局部变量
System.out.println("name=="+name);
}
//实例方法
//String address---方法的参数:局部变量[不是在定义创建参数是设置]
public void method1(String address){
System.out.println("address=="+address);
}
public void method2(){
//局部变量--只能在当前方法中被调用
//System.out.println("name=="+name);
//System.out.println("address=="+address);
}
}
6.成员变量的隐藏
在同一个类中成员变量与某一个方法中的局部变量的名称相同,这时我们在方法中使用这个成员变量的时候,得到的结果是局部变量的值,此时就是方法中的局部变量将类中成员变量的值隐藏了,这就是成员变量的隐藏。
如果需要在方法中使用被隐藏的成员变量的值怎么办?
使用this.成员变量名称 --- 就可以得到被隐藏的成员变量值
注意:成员变量的隐藏与变量的数据类型无关。
package com.wangxing.demo;
/**
* 成员变量的隐藏
* 在同一个类中成员变量与某一个方法中的局部变量的名称相同
* 这时我们在方法中使用这个成员变量的时候,得到的结果是局部变量的值,
* 此时就是方法中的局部变量将类中成员变量的值隐藏了,这就是成员变量的隐藏。
*/
public class TestClass3 {
public String name="zhangsan"; //成员变量
//实例方法
public void method1(){
String name="lisi"; //局部变量
System.out.println("name=="+name); //lisi
//如果需要在方法中使用被隐藏的成员变量的值怎么办?
//使用this.成员变量名称 --- 就可以得到被隐藏的成员变量值
System.out.println("name=="+this.name); //zhangsan
}
}
7.1静态成员变量与实例变量
1.静态成员变量与实例变量都是成员变量
2.静态成员变量是用过static关键字修饰的
3.实例变量就是普通的成员变量,没有使用static关键字修饰的成员变量
7.2实例变量--成员变量
1.可以使用访问限制修饰符【public 缺省的{友好的}】
2.可以不用赋予初始值,系统自动赋予默认值,也可以根据需要自己设置一个初始值。
3.可以在本类中的任意一个方法中被使用
4.只能被对象访问
5.不能在同一个类对象之间共享数据值
/**
* 成员变量可以根据是否有static修饰符,划分成静态成员和实例变量
* 实例变量---就是普通的成员变量,没有使用static关键字修饰的成员变量
*/
public class TestClass4 {
/*实例变量的介绍
1.实例变量就是成员变量
2.可以使用访问限制修饰符【public 不写【缺省的{友好的}】】
3.可以不用赋予初始值,系统自动赋予默认值,也可以根据需要自己设置一个初始值
4.可以在本类中的任意一个方法[排除静态方法]中被调用
5.在其他类中只能通过对象调用
6.不能在同一个类对象之间共享数据值
*/
public String name="zhangsan"; //成员变量--实例变量
}
7.3静态成员变量【类变量】--成员变量
1.可以使用访问限制修饰符【public 缺省的{友好的}】
2.可以不用赋予初始值,系统自动赋予默认值,也可以根据需要自己设置一个初始值。
3.可以在本类中的任意一个方法中被使用
4.可以被对象访问,也可以用类名访问
5.能在同一个类对象之间共享数据值
/**
* 成员变量可以根据是否有static修饰符,划分成静态成员变量和实例变量
* 静态成员变量---有使用static关键字修饰的成员变量【类变量】
*/
public class TestClass5 {
/*静态成员变量的介绍
1.有使用static关键字修饰的成员变量
2.可以使用访问限制修饰符【public 不写【缺省的{友好的}】】
3.可以不用赋予初始值,系统自动赋予默认值,也可以根据需要自己设置一个初始值
4.可以在本类中的任意一个方法[排除静态方法]中被调用
5.在其他类中可以通过对象调用,也可以通过类名调用
6.能在同一个类对象之间共享数据值
*/
public static String name="zhangsan"; //静态成员变量[类变量]
}
静态成员变量与实例变量的区别?
静态成员变量:1.可以使用访问限制修饰符【public 缺省的{友好的}】
2.可以不用赋予初始值,系统自动赋予默认值,也可以根据需要自己设置一个初始值。
3.可以在本类中的任意一个方法中被使用
4.可以被对象访问,也可以用类名访问
5.能在同一个类对象之间共享数据值
实例变量:1.可以使用访问限制修饰符【public 缺省的{友好的}】
2.可以不用赋予初始值,系统自动赋予默认值,也可以根据需要自己设置一个初始值。
3.可以在本类中的任意一个方法中被使用
4.只能被对象访问
5.不能在同一个类对象之间共享数据值