第七章
高级类特征
static
类属性由该类的所有实例共享
public static int total=0;
当total所属类被数次实例化的时候 total只有一个而不是多个
也可静态初始化static
public static int total;
static{
total=100;
}
static标记的变量或者方法由整个类(所有实例)共享
单子模式
class Single{
private static Single onlyone = new Single();
private String name;
public static Single getSingle() {
return onlyone;
}
private Single() {}
}
public class TestSingle{
public static void main(String args[]) {
Single s1 = Single.getSingle();
Single s2 = Single.getSingle();
if (s1==s2){
System.out.println("s1 is equals to s2!");
}
}
static可以修饰变量 方法 内部类
final可以修饰类 属性 方法
final标记的类不能被继承
final标记的方法不能被子类重写
final标记的变量 成员变量或者局部变量 即称为常变量 只能赋值一次
final标记的成员变量必须在声明的同时后在每个构造方法中显式赋值 才能使用
抽象类
abstract class
{
void run();
void rub2()
{ }
}
extends 继承抽象类 抽象方法在主函数外重写
abstarct修饰类时候叫抽象类 修饰方法叫抽象方法
含有抽象方法的类必须被声明为抽象类
抽象类必须被继承 抽象方法必须被重写
抽象类不能被实例化
抽象方法只需要声明不需要实现
public interface runnner
{
public void start();
public void run();
}
接口被继承implements
方法被重写
class person entends 类或者抽象类 implements
接口1,接口2
{
方法
}
接口interface是抽象方法和常量值的定义的集合
从本质上讲接口是一种特殊的抽象类 这种抽象类
中只包含常量和方法的定义 没有变量和方法实现
多个无关的类可以实现同一个接口
一个类可以实现多个无关的接口
与继承关系类似 接口与实现类之间村早多态性
通过接口可以实现不相关类的相同行为 而不需要考虑这些类之间的层次关系
通过接口可以指明多个类需要实现的方法
由接口可以了解对象的交互界面 而不要了解对象所对应的类
public class stringbuffer {
public static void main(String[] args) {
StringBuffer a=new StringBuffer("abcdefg");
System.out.println(a);
a.replace(3, 4, "z");
System.out.println(a);
}
}
abcdefg
abczefg
public class stringbuffer {
public static void main(String[] args) {
StringBuffer a=new StringBuffer("abcdefg");
System.out.println(a);
a.replace(3, 3, "z");
System.out.println(a);
}
}
abcdefg
abczdefg