1.四种访问控制符

private、不指明、protected、public

2.构造函数没有返回值

  是因为构造函数默认返回的是类的实例对象。所以不需要写返回值

3.static

  static表示类拥有。实例:

public class A

{

  public void a()

  { 

    System.out.println("a");

  }

  public void b()

  {

    this.a();
  }

}

这样写是没有问题的,但是如果我们改一改,改成这样:

public class A

{

  public void a()

  {

    System.out.println("a");

  }

  public static void b()

  {

    this.a();

  }

}

因为b()是类拥有,所以可以这样访问A.b(),但此时会出问题,因为b方法中用了this对象,但是从来就没有创建过对象,所以根本就不存在this对象。

结论:静态成员不能直接访问非静态成员

4.形参个数可变的方法要放在方法最后。例如:public void test(int a, String... s)

5.成员变量和局部变量

系统自动为成员变量分配内存空间,并在分配内存空间后,自动为成员变量指定初始值。

局部变量定义后,必须经过显式初始化后才能使用,系统不会为局部变量执行初始化。

6.package、import、import static

  实例:

  package lee;

  public class Hello

  {

    public static void main(String[] args)

    {

      System.out.println("Hello World!");

    }

  }

如果直接使用javac Hello.java命令来编译这个文件,将会在当前路径下生成一个Hello.class文件,而不会生成lee文件夹。

如果使用java -d Hello.java命令编译,则会产生lee文件夹.

推荐编译时总是使用-d选项

可以用import导入相应的包中的单个类,或全部类

可以用import static 导入指定类中单个或全部的静态Field和方法。

7.类的继承

  关键字extends。

  重写父类方法,即子类重写父类方法。

  规则是:方法名相同、形参列表相同;子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应该比父类方法声明抛出的异常类更小或相等;子类方法访问权限应比父类方法访问权限更大或相等。

  如果需要在子类方法中调用父类被覆盖的实例方法,则可使用super限定来调用父类被覆盖的实例方法。

  子类调用父类构造函数,使用super调用父类构造函数,必须出现在第一行

8.多态

  java引用变量有两个类型:编译时类型、运行时类型

  编译时类型:指声明变量明指定的类型

  运行时类型:指给变量赋值时的类型

如果两个类型不同,则称为多态。实例:

class BaseClass

{

  public int a = 6;

  public void base()

  {

    System.out.println("父类的普通方法");

  }

  public void test()

  {

    System.out.println("父类的被覆盖的方法");

  }

}

public class SubClass extends BaseClass

{

  public String a = "java";

  public void test()

  {

    System.out.println("子类的覆盖父类的方法");

  }

  public void sub()

  {

    System.out.println("子类的普通方法");

  }

  public static void main(String[] args)

  {

    BaseClass ploymophicBc = new SubClass();

    System.out.println(ploymophicBc.book);

    ploymophicBc.base();

    ploymophicBc.test();

    // ploymophicBc.sub(); 这里会出错,因为BaseClass类没有提供sub方法,所以下面代码编译时会出现错误

  }

}

9.强制类型转换

  编写java程序时,引用变量只能调用它编译时类型的方法,而不能调用它运行时类型的方法,即使它实际所引用的对象确实包含该方法。如果需要让这个引用变量调用它运行时类型的方法,则必须把它强制类型转换成运行时类型,强制类型转换需要借助于类型转换运算符。

10.instanceof

  instanceof运算符的前一个操作数通常是一个引用类型变量,后一个操作数通常是一个类(也可以是接口),它用于判断前面的对象是否是后面的类,或者其子类、实现类的实例。如果是,则返回true,否则返回false.

通常先用instanceof判断一个对象是否可以强制类型转换,然后再进行强制类型转换。

11.继承与组合

  继承与组合同时都能满足复用类的要求。到底是用继承还是用组合呢?

  继承要表达的是一种“is-a"的关系,而组合表达的是"has-a"的关系。

12.初始化块

  [修饰符]{

  ...

  }

  修饰符只能是static。修饰符只在创建java对象时隐匿执行,而且在执行构造器之前执行。

  普通的初始化块、声明实例Field指定的默认值都可认为是对象的初始化代码,它们的执行顺序与源程序中的排列顺序相同。

  静态初始化块,如果用static修饰初始化块,则初始化块成了静态初始化块,静态初始化块是属于类的。

java类的更多相关文章

  1. 如何用Java类配置Spring MVC(不通过web.xml和XML方式)

    DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来太累, 冗长繁琐. 还好借助于Servl ...

  2. jvm系列(一):java类的加载机制

    java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装 ...

  3. java类与实例

    最近在看设计模式,感觉自己对java的三大特性的理解不够清晰,搞不清楚抽象类.接口.泛型的用处和优缺点.设计模式学了一半,想着还是停下来脑补一下java的基础,就从java对象开始吧. 一.java对 ...

  4. oracle调用JAVA类的方法

    导入jar包 在oracle中导入需要的jar包,我们把编辑好的java类打成jar包,直接在oarcle里面写简单的调用就可以了,  1.操作系统需要拥有支持loadjava命令的jdk.  2.加 ...

  5. Java 类的实例变量初始化的过程 静态块、非静态块、构造函数的加载顺序

    先看一道Java面试题: public class Baset { private String baseName = "base"; // 构造方法 public Baset() ...

  6. hibernate中java类的成员变量类型如何映射到SQL中的数据类型变化

    hibernate映射文件??.hbm.xml配置映射元素详解--Hibernate映射类型 在从Hibernate的java的成员类型映射到SQL中的数据类型,其内映射方式它满足,SQL可以自己调制 ...

  7. kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件

    该kettle插件功能类似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义 ...

  8. Myeclipse中导入项目后java类中汉字注释出现乱码问题(已解决)

    今天重装系统,安装了新的Myeclipse后,导入之前的项目后,,出现了乱码问题.乱码问题主要是java类中的注释,而jsp页面中汉字却完好如初: 右键项目,查看项目的编码格式,UTF-8,把java ...

  9. Java类初始化

    Java类初始化 成员变量的初始化和构造器 如果类的成员变量在定义时没有进行显示的初始化赋值,Java会给每个成员变量一个默认值 对于  char.short.byte.int.long.float. ...

  10. 深入研究Java类装载机制

    目录 1.为什么要研究java类装在机制? 2.了解类装载机制,对于我们在项目开发中有什么作用? 3.装载实现细节. 4.总结 一.为什么药研究Java类装载机制 java类加载机制,便于我们使用自定 ...

随机推荐

  1. Apple Pay--iOS开发

    一.什么是Apple Pay? 1. 概念 Apple Pay,简单来说, 就是一种移动支付方式.通过Touch ID/ Passcode,用户可使用存储在iPhone 6, 6p等设备上的信用卡和借 ...

  2. 基础知识:Q&A

    1.点乘几何意义? >0,a,b同向,=1时,方向完全相同 =0,垂直 <0,反向,=-1时,方向完全相反 2.叉乘几何意义?叉乘得到的向量的方向怎么确定? aXb ,可以得到 同时垂直于 ...

  3. ZeroMQ接口函数之 :zmq_msg_more - 指出是不是还有更多的消息部分可以接收

    ZeroMQ 官方地址 :http://api.zeromq.org/4-2:zmq_msg_more zmq_msg_more(3) ØMQ Manual - ØMQ/3.2.5 Name zmq_ ...

  4. Hibernate的实体类为什么要实现Serializable序列化接口?

    Hibernate的实体类中为什么要继承Serializable?   hibernate有二级缓存,缓存会将对象写进硬盘,就必须序列化,以及兼容对象在网络中的传输 等等. java中常见的几个类(如 ...

  5. onselectstart="return false"

    以前在做图片滚动时,在双击左右箭头,快速切换图片滚动时,会选择附近区域的文字,感觉不是很好,今天在查资料时,讲到了这个问题, 试了一下,不错,解决了问题. IE及Chrome下的方法一样,对相应的元素 ...

  6. mysql cpu和内存监控

    mysqlMem 监控:#!/bin/bashPid=`/bin/ps -ef|grep mysqld|grep -Ev "grep|safe"|awk '{print $2}'` ...

  7. ArcEngine奇怪异常:HRESULT:0x80040351

    错误如图 根据该博客,http://blog.csdn.net/u011609113/article/details/51155116, 显示该错误为Duplicate Field Names wit ...

  8. php字符串笔记

    1.explode:英语的意思就是爆炸,此函数用于将字符串切成数组 2.implode:英语意思是向心聚,将数据拼成字符串. 3.substr:截取字符串,从指定位置截取指定长度,不指定就到最后 4. ...

  9. 第一章-第一题(小学生四则运算)--By郭青云

    1.项目需求 a) 除了整数以外,还要支持真分数的四则运算. (例如:  1/6 + 1/8 = 7/24) b) 让程序能接受用户输入答案,并判定对错. 最后给出总共 对/错 的数量. c) 逐步扩 ...

  10. CentOS 创建SVN 服务器,并且自动同步到WEB 目录

    CentOS 创建SVN 服务器,并且自动同步到WEB 目录 标签: centossvnsubversion服务器 2013-12-06 10:09 5492人阅读 评论(0) 收藏 举报  分类: ...