2021-06-08

本文详细讲解了Java中面向对象设计的深入概念,包括成员变量的声明与区别、this关键字的使用、类的封装原则、访问控制符的应用、静态方法和静态代码块。通过实例演示,阐述了如何避免成员变量冲突和如何利用静态成员共享资源。
摘要由CSDN通过智能技术生成

Java面向对象设计(面向对象进阶-1)

面向对象进阶

在java中,变量分为成员变量和局部变量,成员变量是在类范围内定义的变量,局部变量是在方法中定义的变量。
成员变量的使用

成员变量在使用之前,需要先进行声明,声明成员变量是在类的内部,方法在外部定义的变量,成员变量分为实例变量和类变量。实例变量作用域是当前所属实例的范围,类的成员变量的作用域是整个范围。

成员变量的语法

[<修饰符>][static][final]<变量类型><变量名>

示例如下
public class Hero { 
 String name;//英雄名字
 int  age;//英雄年龄
 
 public static void main(String[] args){
  //创建英雄对象hero1
  Hero hero1 = new Hero();
  hero1.name="德鲁伊";  //为hero1的实例属性name赋值
  hero1.age=45;     
  //创建英雄对象hero2
  Hero hero2 = new Hero();
  System.out.println("英雄hero1的名字:"+hero1.name
   +"\t"+"年龄:"+hero1.age);
  System.out.println("英雄hero2的名字:"+hero2.name
   +"\t"+"年龄:"+hero2.age); 
 }
}
成员变量与局部变量的区别

在类中的位置不同:成员变量在类中方法外面;局部变量在方法或代码块中,或方法声明上(参数列表中)
内存位置不同:成员变量在堆中(方法区中的静态区);局部变量在栈中
生命周期不同:成员变量随着对象的创建而存在,随着对象的消失而消失;局部变量随着方法的调用或者代码块的执行而存在,随着方法的调用完毕或者代码块的执行完毕而消失。
初始值:成员变量有初始值

this关键字和方法调用
Java提供一个this关键字,this关键字总是指向调用该方法的对象。

最大的作用:让类中的一个方法访问该类中的另一个方法或实例成员变量
可以看代码示例:

Public class demo{
  int x ;
  String y;
  public void get(int x , String y){
    this.x = x;
    this.y = y;
 }
 public void method(){
   System.out.println(x,y);
 }
}

总结:this就是对当前类对象的一个引用,可以避免类中成员变量和局部成员变量重名时的冲突问题
所以需要注意:this不能和static静态关键字一起使用,static修饰成员不属于任何对象所所有,而属于类所有

类的成员封装
封装的主要意思:

该隐藏的隐藏,该开发的开发

Java中的封装可以实现以下目的:

1.隐藏类的实现细节
2.让使用者能通过事先预定的方法访问数据
3.可以对数据进行检查提高数据的可用性
4.便于修改,提高代码的可能性

使用访问控制符

private这是Java访问修饰控制符的一种,除了private外,还有default、protected和public,Java访问控制级别从小到大

类中的静态方法和静态代码块

类包括加载和实例化两个阶段,当一个类被加载至Java中,静态成员会被初始化,被static修饰的成员即为静态成员
静态成员包括:静态代码块,静态属性和静态方法静态成员不属于某个对象,仅属于静态成员所在的类,整个项目都是公用的,仅此一份

静态方法实例如下:
public class Math {
    public static int square(int num) {
    	return num*num;
    }
	public static void main(String[] args) {
		int num = 6;
		int result = Math.square(num);
		System.out.println(num+"的平方="+result);

	}

}
运行结果如下:

在这里插入图片描述

注意:静态方法中不能访问实例成员,因为实例成员是对象所有,而static修饰的静态成员的是归属类所有
静态代码块实例如下:
public class StaticBlock {
    static {
    	System.out.println("第一个静态代码块");
    }
    static {
    	System.out.println("第二个静态代码块");
    }
    static {
    	System.out.println("第三个静态代码块");
    }
	public static void main(String[] args) {
	  System.out.println("main()被执行了");

	}

}
运行结果如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值