Java 类规范与声明

学新也能忘旧,回顾一下java类基本信息!

类规范

类的结构组织,一般按照如下的顺序定义:

  1. 常量声明
  2. 静态变量 / 类变量声明
  3. 构造函数部分
  4. 静态方法部分
  5. 成员方法部分

 声明

1. 常量声明

常量有三种类型:静态常量、成员常量、局部常量。

public class Test {
    // 静态常量
    public static final double PI = 3.14;
    // 声明成员常量
    final int x = 10;

    public static void main(String[] args) {
        // 声明局部常量
        final double y = 3.3;
    }
}

final 是定义常量的关键字,表示最终的,如果用来修饰变量,那这个变量就变成了常量。常量取名一般都用大写字符。

静态常量:使用 public static 修饰的常量作用域是全局的,不需要创建对象就可以访问它,在类外部访问形式为 HelloWorld. PI。

2. 静态变量 / 类变量声明

静态变量(类变量)就是用 static 关键字修饰的变量,特点是被该类中所有的实例对象共享。在类加载的时候就生成了。

当我们需要让某个类的所有对象都共享一个变量时,就可以考虑使用静态变量。

    public static void main(String[] args) {
        Mystatic mystatic1 = new Mystatic();
        Mystatic mystatic2 = new Mystatic();
        Mystatic mystatic3 = new Mystatic();
        mystatic1.sum++;
        mystatic2.sum++;
        mystatic3.sum++;
        System.out.println(mystatic1.sum);
        System.out.println(mystatic2.sum);
        System.out.println(mystatic3.sum);
    }

    class Mystatic{
        public static int sum = 0;
    }

3
3
3

 结果,三个实例共享一个变量。 

3. 构造函数部分

构造函数的作用是在对象建立时对 对象初始化。也就是在创建对象时调用。

构造函数的函数名要与类名一样,且没有返回值类型。

注意:

当类中没有定义构造函数时,系统会默认添加一个无参的构造函数。如果自定义了构造函数,就不会创建默认的构造函数了。

在一个类中可以定义多个不同参数的构造函数,这就是重载的体现。构造函数名称相同参数不同。

class Mystatic{
    public static int sum = 0;

    //public修饰无参构造函数
    public Mystatic() {
    }

    //private修饰一个参数的构造函数
    private Mystatic(int test1) {
    }

    //protected修饰俩个个参数的构造函数
    protected Mystatic(int test1, int test2) {
    }

    //默认(无修饰符)+ 抛出异常
    Mystatic(int test1, int test2, int test3) throws Exception {
    }
}

作用域         当前类         同一package         子孙类         其他package

public               √                      √                       √                       √

protected         √                      √                       √                        ×

默认                  √                      √                        ×                       ×

private             √                       ×                       ×                       ×

4. 静态方法部分

静态方法与静态变量类似,会被多个实例所共享,任何一个实例对静态数据成员的修改,都会影响其它实例。在类中使用static修饰,静态方法会随着类的定义而被分配和装载入内存中;而非静态方法属于对象的具体实例,只有在类的对象创建时在对象的内存中才有这个方法的代码段。

public class Test2{
    public static void main(String[] args) {
        System.out.println(Mystatic.getStatic());//使用类名加前缀访问静态方法
        Mystatic s=new Mystatic();
        System.out.println(s.getStatic());//使用实例化对象名访问静态方法
        System.out.println(s.get());
    }
    public static class Mystatic{
        public static int sum = 0;
        public String name = "fan";
        //静态方法只能访问静态数据成员
        public static int getStatic()
        {
            return 6;
        }

        //非静态方法可以访问静态方法、非静态方法、非静态数据成员和静态数据成员
        public int get()
        {
            getStatic();
            System.out.println(name);
            return 66;
        }

        //public修饰无参构造函数
        public Mystatic() {
        }

        //private修饰一个参数的构造函数
        private Mystatic(int test1) {
        }

        //protected修饰俩个个参数的构造函数
        protected Mystatic(int test1, int test2) {
        }

        //默认(无修饰符)+ 抛出异常
        Mystatic(int test1, int test2, int test3) throws Exception {
        }
    }
}

5. 成员方法部分

成员方法是类或对象的行为特征的抽象。Java中的方法不能独立存在,所有的方法必须定义在类中。使用 “类名.方法” 或 “对象.方法” 的形式调用。

public class Mystatic{
    public static int sum = 0;

    //可以使用 [public|private|protected] 修饰
    public String getStatic(){
        return "6";
    }
    public void MakeStatic(){
        System.out.println("无返回值!");
    }
    // 只能在类中使用
    private void SendStatic(){
        System.out.println("private修饰!");
    }
}

调用:

    public static void main(String[] args) {
        Mystatic mystatic = new Mystatic();
        mystatic.getStatic();
        mystatic.MakeStatic();
    }

抽象类与接口的区别

1.抽象类可以有构造方法,接口中不能有构造方法。

2.抽象类中可以有普通成员变量,接口中没有普通成员变量

3.抽象类中可以包含非抽象的普通方法,接口中的可以有非抽象方法,比如deaflut方法

4.抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然 eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

5.抽象类中可以包含静态方法,接口中不能包含静态方法

6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。

7.一个类可以实现多个接口,但只能继承一个抽象类。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值