java类
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类的更多相关文章
- 如何用Java类配置Spring MVC(不通过web.xml和XML方式)
DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来太累, 冗长繁琐. 还好借助于Servl ...
- jvm系列(一):java类的加载机制
java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装 ...
- java类与实例
最近在看设计模式,感觉自己对java的三大特性的理解不够清晰,搞不清楚抽象类.接口.泛型的用处和优缺点.设计模式学了一半,想着还是停下来脑补一下java的基础,就从java对象开始吧. 一.java对 ...
- oracle调用JAVA类的方法
导入jar包 在oracle中导入需要的jar包,我们把编辑好的java类打成jar包,直接在oarcle里面写简单的调用就可以了, 1.操作系统需要拥有支持loadjava命令的jdk. 2.加 ...
- Java 类的实例变量初始化的过程 静态块、非静态块、构造函数的加载顺序
先看一道Java面试题: public class Baset { private String baseName = "base"; // 构造方法 public Baset() ...
- hibernate中java类的成员变量类型如何映射到SQL中的数据类型变化
hibernate映射文件??.hbm.xml配置映射元素详解--Hibernate映射类型 在从Hibernate的java的成员类型映射到SQL中的数据类型,其内映射方式它满足,SQL可以自己调制 ...
- kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件
该kettle插件功能类似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义 ...
- Myeclipse中导入项目后java类中汉字注释出现乱码问题(已解决)
今天重装系统,安装了新的Myeclipse后,导入之前的项目后,,出现了乱码问题.乱码问题主要是java类中的注释,而jsp页面中汉字却完好如初: 右键项目,查看项目的编码格式,UTF-8,把java ...
- Java类初始化
Java类初始化 成员变量的初始化和构造器 如果类的成员变量在定义时没有进行显示的初始化赋值,Java会给每个成员变量一个默认值 对于 char.short.byte.int.long.float. ...
- 深入研究Java类装载机制
目录 1.为什么要研究java类装在机制? 2.了解类装载机制,对于我们在项目开发中有什么作用? 3.装载实现细节. 4.总结 一.为什么药研究Java类装载机制 java类加载机制,便于我们使用自定 ...
随机推荐
- 删除 TOMCAT 上次关闭遗留下来的 SESSION 缓存
参考:删除缓存SESSION 找到tomcat目录下文件:%tomcat home%/conf/context.xml,在标签<Resource>前添加 <Manager pathn ...
- Ecilpse快捷键
编辑快捷键 [ALT+/] 显示代码提示,以及代码自动补全功能. [Ctrl+/] 添加注释 [Ctrl+D] 删除当前行 窗口快捷键 [Ctrl+M] 窗口最大化和还原 查看和定位快捷键 ...
- iOS一些编译运行问题
1.在运行工程时,出现错误如下所示: Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_XXXXX", refer ...
- 使用安卓手机上的shh软件ConnectBot管理您的Linux服务器
ConnectBot是一款在Android手机上通过命令行方式连接管理类Unix系统的软件(类Unix系统包含:FreeBSD.OpenBSD.NetBSD.Solaris.Mac.AIX.GUN/L ...
- mysql索引的一些知识
一.MySQL索引类型 mysql里目前只支持4种索引分别是:full-text,b-tree,hash,r-tree b-tree索引应该是mysql里最广泛的索引的了,除了archive基本所有的 ...
- PHP中获取星期的几种方法
PHP中获取星期的几种方法 PHP星期几获取代码: 1 date(l); 2 //data就可以获取英文的星期比如Sunday 3 date(w); 4 //这个可以获取数字星期比如123,注意0 ...
- Vue.js双向绑定的实现原理
Vue.js最核心的功能有两个,一是响应式的数据绑定系统,二是组件系统.本文仅探究几乎所有Vue的开篇介绍都会提到的hello world双向绑定是怎样实现的.先讲涉及的知识点,再参考源码,用尽可能少 ...
- Tomcat常见问题汇总
1.在服务器上一定要开启-server参数 #直接在一堆注释下添加即可 #即是在 # OS specific support.注释之前 JAVA_OPTS= -server 2.tomcat启动很慢 ...
- SQL JOIN\SQL INNER JOIN 关键字\SQL LEFT JOIN 关键字\SQL RIGHT JOIN 关键字\SQL FULL JOIN 关键字
SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据. Join 和 Key 有时为了得到完整的结果,我们需要从两个或更多的表中获取结果.我们就需要执行 join. 数据库中的表 ...
- sprint2总结
在sprint第二阶段的学习过程中,前期和后期在学校网络的支持下我们成功的延迟了把代码上传github的时间,在我们自己感觉上看,完成项目的质量比较理想,在经过sprint第一阶段的学习后,部分上的问 ...