package test;

public class staticAccess {

public int age;

public staticAccess grow()

{

age++;

return this;

}

public static void info()

{

System.out.println("Simple info way");

}

public static void main(String[] args)

{

staticAccess rt=new staticAccess();

rt.age=10;

rt.grow()

.grow()

.grow();

System.out.println("rt的age Field值是:"+rt.age);

info();

}

}

在上面的程序中可以看出,如果在某个方法中把this作为返回值,则可以多次连续调用同一个方法,从而使得代码更加简洁。但是,这种把this作为返回值的方法可能造成实际意义的模糊,例如上面的grow方法,用于表示对象的生长,即age Field的值加1,实际上不应该有返回值。

Java类中的方法

在JAVA中,方法的参数方法只有一种:值传递。

JAVA形参个数可变的方法

在形参的类型后增加三点(…)则表明该形参可以接受多个参数值,多个参数值被当成数组传入。

实际就是数组。

因此,用数组来代替也是可以的。

package test;

public class staticAccess {

public static void test(int a,String... books)

{

for(String tmp : books)

System.out.println(tmp);

System.out.println(a);

}

public static void main(String[] args)

{

test(5,"疯狂Java","轻量级JAVA");

}

}

public static void test(int a,String... books)也可改为:

public static void test(int a,String[] books)

注意:

个数可变的形参只能处于形参列表的最后。即,一个方法中最多只有一个长度可变的开参。

package test;

public class test {

public static void main(String[] agv)

{

System.out.println("Person's eyeNum class effective:"+Person.eyeNum);

Person p=new Person();

System.out.println("Person's Field 值是:"+p.name+"Person's eyeNum Field 值是:"+p.eyeNum);

p.name="孙悟空";

p.eyeNum=2;

System.out.println("Person's Field 值是:"+p.name+"Person's eyeNum Field 值是:"+p.eyeNum);

System.out.println("hello world Java");

}

}

class Person

{

public String name;

public static int eyeNum;

}

运行结果:

类中定义的static变量,与C++类中定义的不同。还比JAVA多了一步:

与C++中的声明开辟内存空间相比:

类型 类名::变量名=初值;

主要是:成员变量无须显式初始化,只要为一个类定义Field或实例Field,系统就会在这个类的准备阶段或创建该类的实例时进行默认初始化,成员变量默认初始化时的赋值规则与数组动态初始化时数组元素的赋值规则完全相同。

与C++中的静态变量有一个共同之处:

无论这个类的实例有多少个,静态变量的个数只取决于类中定义的静态变量个数.

概念:栈内存中的变量无须系统垃圾回收,往往随着方法或代码块的运行的结束。

注意:

如果一个JAVA源文件里定义的所有类都没有使用public修饰,则这个Java源文件的文件名可以是一切合法的文件名;但如果一个Java源文件里定义了一个public修饰的类,则这个源文件必须与public修饰的类的类名相同。

访问权限:与C++相比,多了一个default。默认是它,称为包访问权限。

package、import、import static

在C++中,与package有相同作用的是namespace。"package"与"namespace"用法不相同.

package packageName;

意义:此文件中的所有东西都是packageName的。有且只有一个。

并且,位于包中的类,也必须有与包同名层次相同的目录结构。

import作用:省略包名

import static 作用:省略写类名

例1:

package lee;

public class test {

public static void main(String[] agv)

{

lee.sub.Apple a=new lee.sub.Apple();

a.out();

System.out.println("hello world Java");

}

}

package lee.sub;

public class Apple {

public void out()

{

System.out.println("hello world lee.sub");

}

}

例二:

package lee;

import static java.lang.System.*;

public class test {

public static void main(String[] agave)

{

out.println("Person's eyeNum class effective:"+Person.eyeNum);

Person p=new Person();

out.println("Person's Field 值是:"+p.name+"Person's eyeNum Field 值是:"+p.eyeNum);

p.name="孙悟空";

p.eyeNum=2;

out.println("Person's Fied 值是:"+p.name+"Person's eyeNum Field 值是:"+p.eyeNum);

out.println("hello world Java");

}

}

class Person

{

public String name;

public static int eyeNum;

}

Java类的继承

第一个不同点:

与C++相比:Java使用了extends关键字来继承父类。

C++只用了两个点:

第二个不同点:

Java语言摒弃了C++中的多继承特征,即每个类最多只能有一个直接父类。

Java重新定义父类方法:重新定义父类方法

在C++的重新定义父类方法 解决方法是 虚函数

在Java中,它的解决方案是规则:两同两小一大。

两同:方法名相同,形参列表相同。

两小:子类的方法返回值类型比父类方法返回值类型更小或相等。

子类的方法声明抛出的异常类应比父类方法声明抛出的异常类小或相等。

一大:子类方法的访问权限应比父类方法的访问权限更大或相等。

super限定

在子类中被重写后,还需调用父类的方法。有两种方法:

父类名为主调 或 用super为主调 来调用父类被重写的方法。

Super是Java的关键字,是用于限定该对象调用它从父类继承得到的Field或方法。

正如this不能出现在static修饰的方法中一样;super也是如此。

JAVA类(上)的更多相关文章

  1. 在Eclipse中设置Java类上面的注释(包含作者、日期等)

    希望在Eclipse中,让Java类上面的注释像下面这样,改如何设置呢? 在Eclipse中,点击菜单中的Window-->Preferences,打开如下窗口:

  2. Eclipse或MyEclipse没有在java类文件上显示Spring图标的问题

    Eclipse或MyEclipse没有在java类文件上显示接口图标的问题解决办法: 前: 后:

  3. java面试题0004-在一个类上是否可以用abstract和final同时加以修饰?

    我们先用提干两个修饰词中的任意一个创建一个类 package components.javaTest.day4_20200910; /** * Question004: * java面试题0004-在 ...

  4. [Java]类的生命周期(上)类的加载和连接[转]

    本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 类加载器,顾名思义,类加载器(class loader)用来加载 Java 类到 Java ...

  5. 小兔Java教程 - 三分钟学会Java文件上传

    今天群里正好有人问起了Java文件上传的事情,本来这是Java里面的知识点,而我目前最主要的精力还是放在了JS的部分.不过反正也不麻烦,我就专门开一贴来聊聊Java文件上传的基本实现方法吧. 话不多说 ...

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

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

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

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

  8. 【Java心得总结五】Java容器上——容器初探

    在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成 ...

  9. 【Java心得总结三】Java泛型上——初识泛型

    一.函数参数与泛型比较 泛型(generics),从字面的意思理解就是泛化的类型,即参数化类型.泛型的作用是什么,这里与函数参数做一个比较: 无参数的函数: public int[] newIntAr ...

随机推荐

  1. linux driver: input子系统

    <韦东山Linux视频第2期_从零写驱动\第13课第1节 输入子系统概念介绍_P.wmv> 本视频对输入子系统的结构进行了详细的剖析,通过本视频,可以了解到input核心包括了设备和han ...

  2. BZOJ 1572: [Usaco2009 Open]工作安排Job( 贪心 )

    贪心... 按截止时间排序 , 然后从小到大考虑 . 假设当前考虑第 i 个任务 , 若目前已选工作数 < D_i , 那就选 i ; 否则 若已选工作中利润最小的比 P_i 小 , 那就去除它 ...

  3. TCP粘包和半包的处理方法

    先把处理的方法的代码放这里: 解析数据帧的代码: bool CSocket::findData(byte* buff, int& len) { for (int i = 0; i <= ...

  4. Cobbler自动化部署

    一:PXE.Kickstart与Cobbler的概念: PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的技术,需要网卡的硬件支持,工作于C/S的 ...

  5. Regex阅读笔记(二)之环视

    环视不匹配任何字符,只匹配文本中的特定位置. 正序环视:(?=) 逆序环视:(?<=) 非捕获(?:) 环视会检查子表达式能否匹配,但它只寻找能够匹配的位置,而不会真正占用这些字符. -用在字符 ...

  6. cocos2dx进阶学习之CCNode

    继承关系 CCNode  -> CCObject CCNode在cocos2dx中抽象舞台对象,需要渲染的对象都是从CCNode派生,包括CCScene,CCLayer,CCSprite等等 C ...

  7. cmake学习笔记(五)

    在cmake 学习笔记(三) 中简单学习了 find_package 的 model 模式,在cmake 学习笔记(四)中了解一个CMakeCache相关的东西.但靠这些知识还是不能看懂PySide使 ...

  8. ceph操作相关命令整合

    ceph基本操作: /etc/init.d/ceph -a start/stop //即在所有节点上执行 单个操作: start/stop ceph-osd id={id} start/stop ce ...

  9. ViewPager引导页效果实例源码

    首先大家先找到本地的sdk,然后找到Google提供的API,具体查找方法如下:sdk——>docs——>index.html——>develop——>training——&g ...

  10. iOS导航条渐变透明

    来源:HelloYeah 链接:http://www.jianshu.com/p/b8b70afeda81 下面这个界面有没有觉得很眼熟.打开你手里的App仔细观察,你会发现很多都有实现这个功能.比如 ...