类和对象

4.1.类是什么?

1.类–类型–数据类型—复合数据类型—自定义复合数据类型
为什么有复合数据类型?
基本数据类型就8种,在开发中远远不够,所以我们就需要一个可以根据自己的需求随时能制作出一个自己需要的数据类型。
2.类–具有共同性质的一组事物的群体。 如:人类
在java中用来描述具有共同性质的一组事物的自定义的复合数据类型—类。
复合数据类型的本质—【根据自己的需求制作自己需要的数据类型的模式/规则/公式】

4.2.如何编写一个Java类?

通过class关键字来创建一个类
例如:

public  class   Hello{ 
}

public—访问限制修饰符【对类的访问权限】
class—创建类的关键字【类的标志】
Hello–类名【首字母大写】
{}----类体
格式:
访问限制修饰符 class 类名{}
例如:

public class Student{ }
class User{ }

4.3.Java类中可以编写什么?

描述一组事物的共同性质
杯子–(名字–形状–大小–颜色–装东西)
名字,形状,大小,颜色-----基本属性
装东西—基本功能
通过事物的基本属性和基本功能来描述具有共同性质的一组事物
基本属性------变量
基本功能-----方法
变量–是用来在类中描述事物的基本属性
方法–是用来在类中描述事物的基本功能
4.4.Java类中变量的分类及其基本特征?
变量—保存数据
1 . 数据类型【不一定就是之前的基本数据类型,也有可能是自定义的复合数据类型】
2 . 变量名称【合法标识符–全字母小写】
3 . 初始值
4 . 作用域
按照在类中编写变量的位置划分:
1 . 成员变量【全局变量】—类中方法外
1 . 可以使用访问限制修饰符,也可以不使用。
2 . 可以不用赋予初始值,系统自动赋予默认值,也可以根据需要自己设置一个初始值。
3 . 可以在本类中的任意一个方法中被使用
2 . 局部变量-------------方法里/方法参数
1 . 不能使用访问限制修饰符。
2 . 必须设置初始值
3 . 只能在本方法中使用。
例如:

public   class  Student1{
	public int stuid1; //可以使用访问限制修饰符
 	int  stuid2; //也可以不使用限制修饰符[缺省的访问限制修饰符]
 	public String stuname1; //可以不用赋予初始值,系统自动赋予默认值
 	public String stuname2="zhangsan";//也可以根据需要自己设置一个初始值。
        
        //成员变量【全局变量】---可以在本类中的任意一个方法中被使用
 	public  void  testMethod1(){
       	System.out.println("stuid1=="+stuid1);
  	System.out.println("stuname2=="+stuname2);
  	}

	public  void  testMethod2(){
       	System.out.println("stuid1=="+stuid1);
  	System.out.println("stuname2=="+stuname2);
 	}
 	//......
 	public  void  testMethod_n(){
       	System.out.println("stuid1=="+stuid1);
  	System.out.println("stuname2=="+stuname2);
 	}
     }

在这里插入图片描述

public class  TestMain{
	public static void main(String args[]){
  	Student1  stu1=new Student1();
  	stu1.testMethod1();
  	stu1.testMethod2();
	}
     }

在这里插入图片描述

4.5.什么是成员变量的隐藏?

在同一个类中成员变量与某一个方法中的局部变量的名称相同,这是我们在方法中使用这个成员变量的时候,得到的结果是局部变量的值,此时就是方法中的局部变量将类中成员变量的值隐藏了,这就是成员变量的隐藏
例如:

public  class  User{
	//成员变量   
	public String username=”zhangsan”;

	public  void  testMethod1(){        
	//局部变量
	char  username=’A’; 
	//成员变量的隐藏
	//成员变量的隐藏与变量数据类型无关,只与变量名称有关。
	System.out.println(“username==+username); //username==A
	//如果我们需要强制使用被隐藏的成员变量,该怎么办?
	//通过this访问被隐藏的成员变量
	System.out.println(“username==+this.username); //username==zhangsan
	}
     } 

4.6.静态成员变量与实例变量的区别?

静态成员变量与实例变量----都是成员变量【全局变量】
1 .可以使用访问限制修饰符,也可以不使用
2 .可以不用赋予初始值,系统自动赋予默认值,也可以根据需要自己设置一个初始值
3 .可以在本类中的任意一个方法中被使用
成员变量【全局变量】可以分为2种
按照成员变量【全局变量】是否使用static关键字
静态成员变量【类变量】—使用static关键字修饰的成员变量【全局变量】
实例变量—没有使用static关键字修饰的成员变量【全局变量】
static关键字—静态的—》提前分配存储数据的内存空间
没有使用static关键字修饰的元素,是在程序运行时分配存储数据的内存空间。
使用static关键字修饰的元素,是在程序运行前分配存储数据的内存空间。
例如:

public  class  TestClass{
	public   int  classid=1001; //实例变量
	public  static  String  classname=”java班”; //静态成员变量【类变量】
	static  String  classcode=20200728;//静态成员变量【类变量】}

区别:
成员变量【全局变量】

静态成员变量【类变量】实例变量
有static 关键字修饰没有static 关键字修饰
程序运行前分配数据的内存空间【早】程序运行时分配数据的内存空间【晚】
可以在多个同类对象之间共享数据值不能在多个同类对象之间共享数据值

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值