面向对象--关键字

关键字:static

简述:
当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中
都单独分配一个用于代表国家名称的变量。

  • class Circle{
    private double radius;
    public Circle(double radius){this.radius=radius;}
    public double findArea(){return Math.PIradiusradius;}}
    • 创建两个Circle对象
      Circle c1=new Circle(2.0); //c1.radius=2.0
      Circle c2=new Circle(3.0); //c2.radius=3.0
  • Circle类中的变量radius是一个实例变量(instance variable),它属于类的每一个对象,不能被同一个类的不同对象所共享。
  • 上例中c1的radius独立于c2的radius,存储在不同的空间。c1中的radius变化不会影响c2的radius,反之亦然
  • 如果想让一个类的所有实例共享数据,就用类变量!
    类属性、类方法的设计思想
  • 类属性作为该类各个对象之间共享的变量。在设计类时, 分析哪些属性不因对象的不同而改变 ,将这些属性设置为类属性。相应的方法设置为类方法。
  • 如果方法与调用者无关,则这样的方法通常被声明为类方法,由于不需要创建对象就可以调用类方法 ,从而简化了方法的调用。
    static的适用范围:在Java类中,可用static修饰属性、方法、代码块、内部类
  • 被修饰后的成员具备以下特点:
    随着类的加载而加载
    优先于对象存在
    修饰的成员,被所有对象所共享
    访问权限允许时,可不创建对象,直接被类调用
    代码实例:
class Circle {
   
	private double radius;
	public static String name = "这是一个圆";
	public static String getName() {
   
		return name;
	}
	public Circle(double radius) {
   
		this.radius = radius;
	}
	public double findArea() {
   
		return Math.PI * radius * radius;
	}
	public void display() {
   
		System.out.println("name:" + name + "radius:" + radius);
	}
}
public class StaticTest {
   
	public static void main(String[] args) {
   
		Circle c1 = new Circle(2.0);
		Circle c2 = new Circle(3.0);
		c1.display();
		c2.display();

类方法(class method)

  • 没有对象的实例时,可以用 类名. 方法名()的形式访问由static修饰的类方法。
  • 在 在static 方法内部只能访问类的 的static 修饰的属性或方法, 不能访问类的非 非static 的结构。
class Person {
   
	private int id;
	private static int total = 0;
	public static int getTotalPerson() {
   
		//id++; //非法
		return total;}
	public Person() {
   
		total++;
		id = total;
	}}
public class PersonTest {
   
	public static void
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值