Java学习笔记_17_static、final、abst修饰符

17.static、final、abst修饰符:

 1>static修饰的变量叫做静态变量:

  · 类中的静态变量属于类,而不属于某个特定的对象。

  · 类的静态成员可以与类的名称一起使用,而不需要创建类的对象。

  · 整个类中静态变量的副本只有一个。

  · 声明为static的变量实质上就是全局变量。 

 2>static修饰的方法叫做静态方法,也叫做类方法:

  · 静态方法只能访问其它的静态方法,不能访问非静态的方法。

  · 静态方法中没有this关键字。

  · 静态方法不能覆盖(重写)为非静态的方法。

 3>静态代码块:

  语法:

       static{//静态代码块

       }

  注意事项:

  · 如果需要通过计算来初始化静态变量,可以声明一个静态块。 

  · 静态块在该类中只被加载时执行一次。

  · 只能初始化类的静态数据成员。

  

  public class StaticTest {
	static int[] values = new int[10];
	static {
		for (int i = 0; i < values.length; i++) {
			values[i] = i;
		}
	}
  }

 4>单态设计模式:

  单态设计模式:

      采取一定的方法保证在整个如见系统中,某个类只能存在一个对  

  象示例,并且该类只能提供一个取得其对象示例的方法。

  方法1:(推荐使用更安全)

  

public class TestSingle {
	// 前面加上private static final修饰符后只能产生一个对象
	private static final TestSingle onlyOne = new TestSingle();

	private TestSingle() {
		// 不能再类的外部使用new,但可以在类的内部使用
	}

	// 外面只能通过方法调用获得一个对象
	public static TestSingle getTestSingle() {
		return onlyOne;
	}
   }

  方法二:

  

 public class TestSingle {

	private static TestSingle onlyOne = null;

	public static synchronized TestSingle getonlyOne() {
		if (onlyOne == null) {
			onlyOne = new TestSingle();
		}
		return onlyOne;
	}
  }

5>final修饰符:

 · final修饰的类不能被子类继承。

 · 使用final修饰的方法不能被子类覆盖。

 · 类中一个final修饰的方法只被修饰一次。

 · 如果一个类为final类,那么它的所有方法都为隐士的final方法。

 · 一个变量可以声明为final,这样可以阻止它的内容被修改。

 · 声明final变量以后,变量只能被初始化一次,然后就不能被就改了。

 · 一个final变量实际上是一个常量。

6>abstract修饰符:

 · 修饰的类即为抽象类,不能被示例话。

 · 构造方法和static方法不是抽象的。

 · 父类的抽象方法往往在子类中实现,抽象类可以具有指向子类的对

   象引用。

 · 抽象类的方法可以是具体方法,也可以是抽象方法。但一个类中如

   果有抽象方法那么这个类一定是抽象类,应该在该类前加上abstract 

   关键字来修饰。

   

 abstract class Shape {//抽象类
	public double length;
	public double width;

	public Shape(double length, double width) {
		this.length = length;
		this.width = width;
	}
	//抽象方法
	public abstract double area();
}

class Rectangle extends Shape {
	Rectangle(double num, double num1) {
		super(num, num1);
	}
	//实现父类的抽象方法
	public double area() {
		return length * width / 2;
	}
}

public class TestShape {
	public static void main(String[] args) {
		Shape sp = new Rectangle(4, 2);
		System.out.println(sp.area());
	}
}

   

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值