java中类相关注意事项
下面default类就是默认修饰符的类
1、Java中调用类中属性或方法(不管是否静态属性或方法)都要在类的方法中调用,虽然这个太基础,但今天想在类中调用静态类的静态变量,不能调用;
2、Java调用内部类公共变量:
public class A {
public class AA {
public int i = 0;
}
}
public class B {
public void method() {
int i = new A().new AA().i;
}
}
3、一个.java文件内只能有一个public 类,可以有多个default类(顶级类只有public和default两种修饰符),而且源文件名必须与public类名一致,否则编译报错
如文件JavaA.java内有类public class Test{}
当用javac JavaA.java命令编译时报错:JavaA.java:1: 错误: 类Test是公共的, 应在名为 Test.java 的文件中声明
如文件JavaA.java内有类public class JavaA{}
用命令javac JavaA.java编译成功,会有JavaA.class文件生成
如文件JavaA.java内有类class Test{}
用命令javac JavaA.java编译成功,会有Test.class文件生成
另外:public static void main(String[] args){}方法可以在public类下也可以在default类下
4、内部类才可以被声明为静态类
5、父子类构造器及其静态块执行顺序
先执行父类静态块,再执行子类静态块
执行完静态块后,先执行父类构造方法,再执行子类构造方法
静态块是在定义类对象的时候执行的,构造方法是在new创建的时候执行的
6、父子类构造函数关系
1)、我们都知道,如果一个类里面没有写任何构造函数,那么默认都会有一个无参构造函数;如果一个类写了有参构造函数,没有写无参构造函数,那么默认的无参构造函数也就不存在了
2)、父类存在默认无参构造函数、或者存在有参构造函数及无参构造函数,子类中不使用super函数,不管实例化的是有参还是无参构造函数,都要先执行父类无参构造,如下图




3)、仍然按照2)中父子类关系,B类有参构造函数使用了super有参数方法,则根据super方法执行父类对应构造函数;super方法在子类构造函数中使用时,只能使用一次,而且必须放在构造函数第一行
修改后的B类及执行结果如下图,第三张图是使用两个super编译错误提示



4)、如果A类没有无参构造函数,有一个有参构造函数,那么B类必须使用super指定执行的父类构造函数,可见子类构造函数形式与父类没有必然一致性




如果B类构造函数没有使用super,编译报错

5)、如果父类重写了无参构造函数(依然没有参数),子类可以重写构造函数,或者不写构造函数;如果父类写了有参构造函数,没有无参构造函数,那么子类必须要写构造函数,且带有super,如果不写会编译报错父类没有可用构造函数错误




java中类相关注意事项的更多相关文章
- redis安装 phpredis Jedis 扩展的实现及注意事项,php,java,python相关插件安装实例代码和文档推荐
redis安装 phpredis Jedis 扩展的实现及注意事项,php,java,python相关插件安装实例代码和文档推荐 1.Redis 官方网站下载: http://redis.io/dow ...
- Java中类的继承深入剖析
在Java开发中,我们常常用到继承这一概念,可以说继承是Java这类面向对象编程语言的基石.正是有了继承这个概念,使得我们可以创建分等级层次的类.今天小编就和大家一起来深入聊聊Java语言的继承. 在 ...
- Java中类与类的关系
在java中类和类的关系大致分三种:泛化.关联.依赖. 1. 泛化(Generalization) "XX是一个XX"关系(is a),通常使用的关键词为 extends.impl ...
- java 中类为啥要序列化
java里为什么要序列化?http://zhidao.baidu.com/link?url=7_wAQ8eAl28vcJPE5OKM5Y0Bo4aINNQokHhRmI9XPszEoTO5QF-gNb ...
- JAVA开发相关
JAVA开发相关1. IntelliJ IDEA开发工具熟练使用2. Maven3. Spring框架(IoC.AOP) 1)数据库相关MyBatis 2)数据库连接池 3)事务.多数据源.跨数据库分 ...
- 获取Java系统相关信息
package com.test; import java.util.Properties; import java.util.Map.Entry; import org.junit.Test; pu ...
- java中类的创建及初始化过程
java中类的创建及初始化过程无外乎两种情况,其一为单类的创建及初始化,其二具有继承关系的父子类创建及初始化过程. 首先说简单的,单类的创建及初始化过程.在java中我们都知道绝大部分对象的创 ...
- Java中类的加载、连接和初始化
Java中类的加载.连接和初始化 类的加载.连接和初始化 先介绍一下JVM和类 JVM和类: 当我们调用Java命令运行某个Java程序时,该命令将会启动一个Java虚拟机进程,不管该Java程序有多 ...
- java接口相关例题
java接口相关习题 interface Graphics{ //接口里面只能用抽象方法 public abstract double area(); }//设置 平面类class Plan ...
随机推荐
- buzhoutiao
基于SUI前端框架 前台HTML: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...
- PCL滤波介绍(2)
(1)使用statisticalOutlierRemoval滤波器移除离群点 使用统计分析技术,从一个点云数据中集中移除测量噪声点(也就是离群点)比如:激光扫描通常会产生密度不均匀的点云数据集,另外测 ...
- asp.net请求管道和页面生命周期
- 使用javascript实现浏览器全屏
HTML 5中的full screen,目前可以在除IE和opera外的浏览器中使用 ,有的时候用来做 全屏API,游戏呀,等都很有用.先看常见的API 1 element.requestFullSc ...
- Oracle 11g 数据库 shutdown 后立即执行 startup mount 报错的解决办法
最新文章:Virson's Blog 今天在配置Goldengate时Capture进程提示未开启归档日志,然后立即用sys用户登录orcl数据库,然后执行了“shutdown immediate”命 ...
- ADB 设置远程调试
Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00016657 相信很多人在android 开发调试的时 ...
- Policy Gradient
Policy Gradient是区别于Q-Learning为代表的value based的方法.policy gradient又可以叫reinforce算法(Williams, 1992). 如今的A ...
- form表单target的用法
偶然有一机会发现form表单的target的用法,可以实现当前页表单提交而不进行跳转刷新.代码如下,首页在页面里准备一form表单和一iframe <form action="提交的a ...
- JDBC删除表实例
在本教程将演示如何在JDBC应用程序中删除一个数据库表. 在执行以下示例之前,请确保您已经准备好以下操作: 具有数据库管理员权限,以在给定模式中删除数据库表. 要执行以下示例,需要用实际用户名和密码替 ...
- Maven目标
Maven主要目标是提供给开发人员: 项目是可重复使用,易维护,更容易理解的一个综合模型. 插件或交互的工具,这种声明性的模式. Maven项目的结构和内容在一个XML文件中声明,pom.xml 项目 ...