教程集 www.jiaochengji.com
教程集 >  脚本编程  >  java  >  正文 java class类入门笔记

java class类入门笔记

发布时间:2016-10-18   编辑:jiaochengji.com
教程集为您提供java class类入门笔记等资源,欢迎您收藏本站,我们将为您提供最新的java class类入门笔记资源
类在java中非常的常用了,对于类只要学过php或asp及其它编程语言的朋友都不陌生了,下文我们来看在java中类是什么样的一个东西。

概念

类可以看成是创建Java对象的模板。

类是客观存在的,抽象的,概念的东西。

类必须使用class关键字来表明这是一个类。

既然是类,java允许类不加public关键字约束,当然类的定义只能限制为public或者无限制关键字(默认的)。

例如一个人类:

public class Person{
 
}

或者

class Person{
 
}

上述实例中,public关键字是这个类的访问权限,class关键字表明这是一个类,Person是类的名称。

main方法

main()方法的声明为:public static void main(String args[])。必须这么定义,这是Java的规范。

当一个类中有main()方法,执行命令“java 类名”则会启动虚拟机执行该类中的main方法。

由于JVM在运行这个Java应用程序的时候,首先会调用main方法,调用时不实例化这个类的对象,而是通过类名直接调用因此需要是限制为public static。

对于java中的main方法,jvm有限制,不能有返回值,因此返回值类型为void。 main方法中还有一个输入参数,类型为String[],这个也是java的规范,main()方法中必须有一个入参,类细必须String[],至于字符串数组的名字,这个是可以自己设定的,根据习惯,这个字符串数组的名字一般和sun java规范范例中mian参数名保持一致,取名为args。

因此,main()方法定义必须是:“public static void main(String 字符串数组参数名[])”。

HelloWord实例:

public class HelloWord{
    public static void main(String [] args){
        System.out.print("HelloWord");
    }
}


访问权限

Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。

默认访问修饰符-不使用任何关键字

接口里的变量都隐式声明为public static final,而接口里的方法默认情况下访问权限为public。

请注意以下方法继承的规则:

1.父类中声明为public的方法在子类中也必须为public。

2.父类中声明为protected的方法在子类中要么声明为protected,要么声明为public。不能声明为private。

3.父类中默认修饰符声明的方法,能够在子类中声明为private。

4.父类中声明为private的方法,不能够被继承。

实例:

class Test1{
  private static int age = 1;
  public  static int age2 = 2;     
  protected static int age3 = 3;
  static int age4 = 4;
}
 
public class Test2 extends Test1{
    public static void main(String [] args){
        //System.out.print(age);//no
        System.out.print(age2);//yes
        System.out.print(age3);//yes
        System.out.print(age4);//yes
  }
}

java类加载机制的过程

1. 预先加载与依需求加载
Java 运行所需要的基本类采用预先加载,的方法全部加载要内存当中,因为这些单元在 Java 程序运行的过程当中经常要使用的,主要包括 JRE 的 rt.jar 文件里面所有的 .class 文件。
我们在程序中需要使用自己定义的类的时候就要使用依需求加载方法。

2. 隐式加载和显示加载

程序中用 new 关键字来定义一个实例变量, JRE 在执行到 new 关键字的时候就会把对应的实例类加载进入内存,用的也很多, JRE 系统在后台自动的帮助用户加载,减少了用户的工作量,也增加了系统的安全性和程序的可读性。
程序员自己写程序把需要的类加载到内存当中(显示加载)

Class c = Class.forName("TestClass");
  TestClass object = (TestClass)c.newInstance
我们通过 Class 类的 forName (String s) 方法把自定义类 TestClass 加载进来,并通过 newInstance ()方法把实例初始化

Test test = new Test();//Test 类为自定义的一个测试类;

ClassLoader cl = test. getClass().getClassLoader();

  // 获取 test 的类装载器;

Class c = Class.forName("TestClass", true, cl);

因为一个类要加载就必需要有加载器,这里我们是通过获取加载 Test 类的加载器 cl 当作加载 TestClass 的类加载器来实现加载的。


3. 自定义类加载机制

URL url = new URL("file:/d:/test/lib/");

  URLClassLoader urlCL = new URLClassLoader(new URL[]{url});

  Class c = urlCL.loadClass("TestClassA");

  TestClassA object = (TestClassA)c.newInstance();

  object.method();


首先定义 URL 指定类加载器从何处加载类, URL 可以指向网际网络上的任何位置,也可以指向我们计算机里的文件系统 ( 包含 JAR 文件 ) .上述范例当中我们从 file:/d:/test/lib/ 处寻找类;然后定义 URLClassLoader 来加载所需的类,最后即可使用该实例了。

4. 类加载器的阶层体系
当执行hllo.class时候,java.exe会自动找到很显眼的jre位置,接着会在其中找到jvm.dll,(在jdk和jre中都有jvm)有了.dll文件之后激活jvm加载动态库,jvm活后,先做一些初始化的动作,比如说读取系统参数等。

然后,一旦初始化动作完成之后,就会产生第一个类加载器?? Bootstrap Loader (靴带机制,就是系上鞋带就要走路了), Bootstrap Loader 是由 C 所撰写而成,这个 Bootstrap Loader 所做的初始工作中,除了一些基本的初始化动作之外,最重要的就是加载 Launcher.java 之中的 ExtClassLoader ,并设定其 Parent 为 null ,代表其父加载器为 BootstrapLoader .然后 Bootstrap Loader 再要求加载 Launcher.java 之中的 AppClassLoader ,并设定其 Parent 为之前产生的 ExtClassLoader 实体。这两个加载器都是以静态类的形式存在的。这里要请大家注意的是, Launcher$ExtClassLoader.class 与 Launcher$AppClassLoader.class 都是由 Bootstrap Loader 所加载,所以 Parent 和由哪个类加载器加载没有关系。

这三个加载器就构成我们的 Java 类加载体系。他们分别从以下的路径寻找程序所需要的类:

BootstrapLoader : sun.boot.class.path

ExtClassLoader: java.ext.dirs

AppClassLoader: java.class.path

这三个系统参量可以通过 System.getProperty() 函数得到具体对应的路径。大家可以自己编程实现查看具体的路径。

您可能感兴趣的文章:
Java入门笔记8_JavaTools
Java入门笔记1_HelloWorld
Golang笔记:语法,并发思想,web开发,Go微服务相关
Java入门笔记4_访问控制和包
Java入门笔记5_异常
笔记本电脑散热不好什么原因,笔记本散热差的解决办法
有感:应聘Java笔试时可能出现问题及其答案
Java入门笔记6_线程
Java入门笔记9_Socket
(原)JAVA入门书籍读后感

[关闭]
~ ~