java基础学习4

访问修饰符:

  • private: 私有的。只有在类的主体中才可以访问。只能修饰属性和方法,不能修饰类。
  • protected: 受保护的。该类及子类的成员均可以访问,同一个包中的类也可以访问,只能修饰属性和方法不能修饰类
  • public:公共的。该类或非该类均可以访问
  • 默认的:不使用修饰符。只有相同包中的类可以访问。

static修饰符:

static修饰符可以修饰变量、方法或代码块

静态变量:

  • 类中的静态变量属于类,而不属于某个特定的对象
  • 类的静态成员可以与类的名称一起使用,不需要创建类的对象。
  • 静态变量或方法也称为类的变量或方法
  • 不管创建了类的多少示例,整个类中静态变量的副本只有一个。
  • 引用静态变量时建议使用类名来调用
  • 声明为static的变量实质就是全局变量

静态方法:

static修饰的方法为静态方法,目的是使该方法独立于类的示例,使用类去访问,也叫类方法。
特征:

  • 类的静态方法只能访问其他的静态成员,不能访问非静态的成员
  • 静态方法中没有this关键字
  • 静态方法不能覆盖为非静态方法

静态代码块:

static int a;
static {
    a = (int)(100.0 * Math.random());
}
  • 需要通过计算来初始化静态变量,可以声明一个静态块。
  • 静态块在类被加载时执行一次
  • 只能初始化类的静态数据成员

单态设计模式:

设计模式:在大量实践中总结和理论化之后优选的代码结构、代码风格、UI及解决问题的思考方式
单态设计模式:采取一定的方法保证在整个软件系统中,某个类只能存在一个对象实例,并且该类只提供一个取得其对象示例的方法。

两种方式:

public class TestSingle {//形式一
    private static final TestSingle onlyone = new TestSingle();
    // private static final 修饰后只能产生一个对象
    private TestSingle() {
        //不能在类的外部使用new但是在类的内部可以
    }
    public static TestSingle getTestSingle() {
        return onlyone;//外面只能通过方法调用活的一个对象
    }
}
public class Singleton {//形式二
    private static Singleton instance = null;
    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

final修饰符(这里很像const):

final 修饰符可以修饰类、方法、变量。在修饰不同的对象时是不同的,但是代表不可改变

  • final修饰类
    final 修饰的类不能被子类继承
  • final修饰方法
    • 在方法声明中使用final关键字向编译器表明子类不能覆盖此方法。
    • 在声明类中,一个final方法只能被实现一次
    • 类为final修饰的,那么它的方法隐式的为final方法
class TestFinal {
    final void f() {}
}
class Further extends TestFinal {
    final void f(){}//错误 final方法不能被覆盖
}
  • final 修饰变量:
    • 不可修改变量
    • 只能被初始化一次
    • 实质是一个常量

abstract修饰符:

规则:

  • 修饰的类即为抽象类, 不能被实例化
  • 构造方法和static方法不能被是抽象的
  • 父类的抽象往往在子类中实现,抽象类可以具有指向子类对象的对象引用

一个类中有抽象方法则这个类也应该是抽象类

接口:

接口即规范。

接口的定义及实现:

java中interface关键字来定义接口。接口中的方法都只有声明,没有方法主体。

public interface PCI { // 定义了一个PCI接口
    public void start(); //定义了一个开始的方法
    public void stop(); //定义了一个结束的方法
} 

接口中只能有抽象方法。接口就是永来被子类实现的,这样可以让不同的子类遵守相同的规范,但却又有自己的实现。

class SoundCard implements PCI {
    public void start(){
        System.out.println("DUDU");
    }
    public void stop(){
        System.out.println("send...");
    }
}

当一个类实现一个接口时,必须实现这个接口中定义的所有方法。否则这个类必须定义成抽象的。

接口中的常量:

在接口定义的变量默认是public static final修饰的,变量值不能改变,这种变量也可以叫做常量。

接口中的常量:

public interface Runner {
    public void run();
}

public interface Constants {
    public static final int COLOR_RED = 1;
    public static final int COLOR_GREEN = 1;
    public static final int COLOR_BLUE = 1;
}
class Car implements Runner, Constants { // 实现两个接口,用","分隔多个接口
    public void run() {
        System.out.println("车颜色是:" + COLOR_GREEN);
        System.out.println("用四个轮子跑")l
    }
}
原文地址:https://www.cnblogs.com/DengSchoo/p/12727612.html