一个类的实现:
(1)当装载这个类的时候,实际上是调用的类的static方法或者访问类的static字段的时候,java解释器会搜寻classpath来找到这个类
(2)装载类后,会对static数据进行初始化。
(3)当用new创建一个新对象时,会在堆中为对象分配足够的内存
(4)内存先被清零 ,自动把对象的数据成员赋上缺省值。变量为0或对应的true或'/u0000',引用赋为null
(5)执行定义成员数据的初始化
(6)执行构造函数
////////////////////////////对象就是数据+方法。
方法一 /////////////这样构造类
class person1 /////////////但不能这样声明 public class person1
{///////////////这样写会出错 。
String name;
int age;
}
public class person
{
public static void main(String[] args)/////////main函数的参数必须这样写不能省略args,当然可以使用其他的变量
{person1 test = new person1();
}
}
方法二///////////////////这样也可以
public class person
{String name;
int age;
public static void main(String[] args)
{person test = new person();
}
}
class person //////////////class 前的public 可以不写。
{
public static void main(String[] args)
{
..........................................
}
}
class person1
{
String name;
int age;
void test()
{
in t = new in(); /////////////////////每一次都必须实例化。
t.test1();////////否则编译失败。
System.out.println("person1");
}
class in ///////////////内部类
{
void test1()
{
System.out.println("in");
}
}
}
///////////////////在构造函数中如果要调用其他构造函数,就要把其他的构造函数放在最前面.
///////////////////如果调用自身的构造函数可以这样写:
Flower(String s)
{
System.out.println("String create");
}
Flower(int i)
{
System.out.println("int create");
}
Flower(String s,int i)
{
this(i);////放在最前面
System.out.println("String and int create");
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
但继承的时候
D:/Javaworkspace/test/testNow/Init.java
class SupClass
{
public SupClass(int id)
{
System.out.println(id+"SupClass is construct!");
}
}
public class Init extends SupClass
{
static int i;////////这样写在super(i)处就不会出错。
public Init()
{
super(i);
i=0;
}
}
/////变化一下:
public class Init extends SupClass
{
int i;
public Init()
{
super(i);//这里就会报错。这是因为先初始化static变量,后进行自身类的构造函数调用,后调用基类构造函数,再进行
i=0; //自身类中成员变量的初始化。
}
}
//////////再写一个类
public class ObjOrPri {
SupClass a= new SupClass(i);//这里会报错,这就意味着成员对象是顺序进行的初始化。
int i;
ObjOrPri()
{
System.out.println(a);
}
}
///////////如果改为这样
public class ObjOrPri {
int i;
SupClass a= new SupClass(i);/////这里就不会报错。
ObjOrPri()
{
System.out.println(a);
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
根基类的static先被初始化。然后到子类的构造函数,在到基类的构造函数。
每一个类都有自己的方法。超类的和子类的方法名必须相同。但是超类可以不实现那个方法。
最后在某一个类中用一个函数来用超类的引用当作参数。调用和子类同名的函数叫做多态。
这样做的好处是如果超类和子类都存放在同一个数组里,这样就可以节省代码。
抽象类中不需要每一个方法都是抽象的。但至少有一个。
static和abstract关键字好像不能同时使用。
清除类的时候先从派生类开始,然后才是超类。
如果在构造函数中调用多态,那么将会调用被覆盖的函数。
ClassCastException运行时类型检查异常。
不是后绑定就不是多态。
分享到:
相关推荐
TSM Server-Client-TDPO安装配置手记
8种Java Web框架安装手记,分别是Grails,GWT,JSF,Play,Spring,Struts,Vaadin,Wacket。全部是截止2013-12-19最新的框架版本,文档最后有链接可以下载所有相关资料和jar包以及示例程序,任何问题可以联系...
yum -y groupinstall "Java Development" yum -y groupinstall "X Window System" yum -y groupinstall "GNOME Desktop Environment" yum -y install vnc-server =|= 配置VNC -----------------------------------...
大厂真题之菜鸟网络-Java初级.pdf
大厂真题之字节跳动-Java初级.pdf
作者手记:我看到许多论坛的朋友, 寻找 中文的javaAPI, 无奈sun没有提供中文的,这是SUN对中国程序员的轻视,有日文,为什么不能有中文,小日本为什么不用看英文。 我利用JavaWebStudio里提供的, 制作chm格式的, ...
阿里巴巴JAVA java编码规范 java变成习惯。一本很好的java开发规范文档
作者手记:我看到许多论坛的朋友, 寻找 中文的javaAPI, 无奈sun没有提供中文的,这是SUN对中国程序员的轻视,有日文,为什么不能有中文,小日本为什么不用看英文。 我利用JavaWebStudio里提供的, 制作chm格式的, ...
Wicket 1.4 开发手记(一) helloworld与环境配置
不过《专家手记AJAX开发实战 》的出现改变了这一面貌。 这本书不仅用了大量篇幅介绍了流行的AJAX框架,书中用了三个章节以一个实用的WebOS为案例讲解了基于AJAX技术的Web系统的开发,开发出了模拟Windows桌面、...
Jfreechart开发手记(一) 一个完整的柱状图的实现方法 含数据下钻的实现方法
下载安装openoffice4.1.0我最初安装4.1.1...不知道为什么。有可能是java没安装最新的jre吧。openoffice我是自定义全部安装。 3、安装jre环境。我安装的jdk-7u75-windows-i586.exe,这个你可以自己到oracle的官网下载。
面向 Java 开发人员的 Ajax: Google Web Toolkit 入门 图文教程
struts在eclipse中的配置方法
[原创]wicket开发手记(三)数据校验 主要是提交后的数据验证
用java写的一个俄罗斯方块,代码很简单,逻辑很好理解,
原创:iReport&JasperReport开发手记(一) List报表开发与发布 b/s下,List报表开发与发布
swt从入门都精通,感知与java swing的异同
平台包括 「CSDN」「掘金」「简书」「知乎」「SegmentFault」「博客园」「开源中国」「慕课手记」,相信无论你对 Intellij IDEA 目前了解到什么程度,这个项目都能帮到你。 建议一键三连,持续更新。 文末有不可描述...
一个通用的范例,包括查询、列表与刷新、分页等等