static

static

用处

设计类 必须new对象 系统才分配内存
static创建的类变量、类方法 可以不创建对象直接使用
希望某些数据在内存里一份

使用限制

仅用于 属性 方法 内部类 代码块

类变量

所有实例共享 如全体中国人的nationality 应该为static String
类变量适用于该类所有对象

类方法

类方法 不能有 this、super
类方法只能修改static修饰的变量

代码块

用于类或对象初始化

调用了Person初始化就sout了

public class staticTest {
	public static void main(String[] args) {
		Circle c1 = new Circle(2.0);
		Circle c2 = new Circle(3.0);
		Circle.name="???";//类变量
		c1.display();
		c2.display();
		Circle.rename("wuo ");
		c1.display();
		c2.display();
    }
}
class Circle {
private double radius;
public static String name = "这是一个圆";
public static String getName() {
return name;
}
public static void rename(String s){
	 name=s;//不能有this/super
	//radius=10; 类方法只能修改static变量
}
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);
}
}

单例设计模式


package day111;

public class Singleton1 {
	public static void main(String[] args)
	{
		Bank bank1=Bank.getinstance();
		Bank bank2=Bank.getinstance();
	    System.out.println(bank1==bank2);
	    for(int i=0;i<args.length;i++)System.out.println(args[i]+'\n');
	}
}
class Bank
{
	/*//饿汉
	private Bank(){	
	}
	private static Bank xxx=new Bank();//先造一个private对象
	
    public static Bank getinstance()
    {
    	return xxx;
    }//
    */
	//懒汉
	private Bank(){
	}
	private static Bank bianliang=null;//
	public static Bank getinstance(){
		if(bianliang==null)bianliang =new Bank();
		return bianliang;
	}
}

final

1.final 标记的类不能被继承.提高安全性,提高程序的可读性。
如String类、System类、StringBuffer类
2final 标记的方法不能被子类重写。
比如:Object类中的getClass()。
3final 标记的变量( 成员变量或局部变量) 即称为常量 。名称大写,且只能被赋值一次

abstract

1.用abstract关键字来修饰一个类,这个类叫做抽象类
用abstract来修饰一个方法,该方法叫做抽象方法。
2.抽象方法:只有方法的声明,没有方法的实现。以分号结束:
比如:public abstract void talk();
3. 含有抽象方法的类必须被声明为抽象类。
4. 抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,
并提供方法体。若没有重写全部的抽象方法,仍为抽象类。
5. 不能用abstract修饰变量、代码块、构造器;
6.不能用abstract修饰私有方法、静态方法、final的方法、final的类。
抽象类是用来模型化那些父类无法确定全部实现,而是由其子类提供具体实现的对象的类。

//Java 允许类设计者指定:超类声明一个方法但不提供实现,该方法的实现由子类提供。
//这样的方法称为抽象方法.有一个或更多抽象方法的类称为 抽象类 。
public abstract class Vehicle{
public abstract double calcFuelEfficiency();//计算燃料效率的抽象方法
public abstract double calcTripDistance(); //计算行驶距离的抽象方法
}
public class Truck extends Vehicle{
public double calcFuelEfficiency( ) { //写出计算卡车的燃料效率的具体方法 }
public double calcTripDistance( ) { //写出计算卡车行驶距离的具体方法 }
}
public class RiverBarge extends Vehicle{
public double calcFuelEfficiency( ) { //写出计算驳船的燃料效率的具体方法 }
public double calcTripDistance( ) { //写出计算驳船行驶距离的具体方法}
}

接口

posted @ 2021-03-19 20:50  liv_vil  阅读(52)  评论(0)    收藏  举报