java基础学习之(二):Java中的关键字
2015-06-29 16:38
549 查看
1、super
在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来。当new一个子类对象的时候,必须首先要new一个父类的对像出来,这个父类对象位于子类对象的内部,所以说,子类对象比父类对象大,子类对象里面包含了一个父类的对象,这是内存中真实的情况.
总结:new一个对象的时候,必须调用构造方法(语言规定),而构造子类时,必须调用父类的构造方法。
所以:
如果父类有无参构造方法,子类构造方法中可以不显示调用父类的构造方法;
如果父类有有参构造方法,子类构造方法必须使用如super("Lucy")显示调用父类的构造方法。
使用的地方
调用父类的构造方法:super("Lucy");一般要写在第一行。
调用父类的实例方法:super.method();
调用父类的成员变量:super.var;
静态方法或静态代码块中不能使用super
2、this
用到this的地方
构造方法互相调用;
this.name=name;
owner.setDog(this);
3、访问控制修饰符
修饰符种类:公开public、保护protected、默认、私有private
可修饰内容:成员变量、成员方法、构造方法
另外:顶层类只能由public或默认修饰
4、abstract
可以修饰类或者成员方法。
修饰的类为抽象类,不能被实例化;修饰的方法为抽象方法,无方法体。
注意事项:
抽象类中可以有非抽象方法;包括抽象方法的类必须是抽象类;继承抽象类后未实现父类所有抽象方法的类必须是抽象类。
没有抽象构造方法和抽象静态方法。
抽象类中可以有非抽象的构造方法。
抽象类不能被实例化,但抽象类可以创建一个引用变量,让它引用非抽象子类的实例。
抽象类和抽象方法不能被final修饰。
5、final
可以修饰非抽象类,非抽象成员方法和变量
final修饰的类不可被继承;修饰的方法不可被子类覆盖;修饰的成员变量只能被显示赋值一次,修饰的实例变量可以定义时赋值或在构造方法中赋值,修饰的静态变量特殊处理。
final不能修饰构造方法
private类型的方法默认是final类型的
final修饰的引用变量,不能改变引用的对象,但可以改变引用对象的内容
6、static
可以修饰成员变量,成员方法或代码块。
被修饰的变量和方法可以通过类名或实例名来调用。
静态方法中可以访问静态变量和静态方法,不可以用this,super等。
静态方法必须被实现,不能和abstract共存(abstract也不能和final共存)。
静态方法和实例方法的字节码都位于方法区。
静态代码块,在加载类的时候被且只被执行一次,多个静态代码块时,按他们出现的顺序执行,比main方法早。
在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来。当new一个子类对象的时候,必须首先要new一个父类的对像出来,这个父类对象位于子类对象的内部,所以说,子类对象比父类对象大,子类对象里面包含了一个父类的对象,这是内存中真实的情况.
总结:new一个对象的时候,必须调用构造方法(语言规定),而构造子类时,必须调用父类的构造方法。
所以:
如果父类有无参构造方法,子类构造方法中可以不显示调用父类的构造方法;
如果父类有有参构造方法,子类构造方法必须使用如super("Lucy")显示调用父类的构造方法。
使用的地方
调用父类的构造方法:super("Lucy");一般要写在第一行。
调用父类的实例方法:super.method();
调用父类的成员变量:super.var;
静态方法或静态代码块中不能使用super
2、this
用到this的地方
构造方法互相调用;
this.name=name;
owner.setDog(this);
3、访问控制修饰符
修饰符种类:公开public、保护protected、默认、私有private
可修饰内容:成员变量、成员方法、构造方法
另外:顶层类只能由public或默认修饰
4、abstract
可以修饰类或者成员方法。
修饰的类为抽象类,不能被实例化;修饰的方法为抽象方法,无方法体。
注意事项:
抽象类中可以有非抽象方法;包括抽象方法的类必须是抽象类;继承抽象类后未实现父类所有抽象方法的类必须是抽象类。
没有抽象构造方法和抽象静态方法。
抽象类中可以有非抽象的构造方法。
抽象类不能被实例化,但抽象类可以创建一个引用变量,让它引用非抽象子类的实例。
抽象类和抽象方法不能被final修饰。
5、final
可以修饰非抽象类,非抽象成员方法和变量
final修饰的类不可被继承;修饰的方法不可被子类覆盖;修饰的成员变量只能被显示赋值一次,修饰的实例变量可以定义时赋值或在构造方法中赋值,修饰的静态变量特殊处理。
final不能修饰构造方法
private类型的方法默认是final类型的
final修饰的引用变量,不能改变引用的对象,但可以改变引用对象的内容
6、static
可以修饰成员变量,成员方法或代码块。
被修饰的变量和方法可以通过类名或实例名来调用。
静态方法中可以访问静态变量和静态方法,不可以用this,super等。
静态方法必须被实现,不能和abstract共存(abstract也不能和final共存)。
静态方法和实例方法的字节码都位于方法区。
静态代码块,在加载类的时候被且只被执行一次,多个静态代码块时,按他们出现的顺序执行,比main方法早。
相关文章推荐
- Spring MVC 读取静态资源时404错误
- java中static{}语句块详解
- Java程序设计实用教程(第四版,叶贺亚)考试复习题-纯属个人思想
- 深入浅出 Java Concurrency(二)—锁机制(一)
- Spring factorybean
- 解决spring+c3p0数据库连接一直增加的问题
- java基础-多线程
- JAVA之JNDI初步理解
- Java中的Filter
- Idea_从Eclipse转Intellij IDEA
- Spring 配置方式
- struts2.1笔记06:struts2开发环境的搭建实际操作出现的问题
- 深入浅出 Java Concurrency (一) ----原子操作
- 【Spring学习笔记-MVC-14】Spring MVC对静态资源的访问
- spring中使用 @value 简化配置文件的读取
- struts2ActionContextCleanUp的作用
- struts2 使用拦截器记录异常日志
- webService之(一)java原生态服务端
- java通过给按钮添加监听器理解接口的作用
- Java Web框架之二层模型-JSP+JavaBean