【Java概念】类组成结构、成员变量、成员方法(5)

时间:2022-12-12 12:10:10

类:

package cn.hncu.program.class_;


/**
* 项目名:进入Java世界的第一个类 ---HelloWorld
* 时间 :2017-9-10 下午5:23:28
*/

/*
* 1.世间万物皆对象
* 2.我们在Java 里的全部工作就是定义类、制作那些类的对象以及将消息发给那些对象。
* 3.类中包含两部分:
* 成员变量(字段)、成员方法(方法)
* 4.成员变量:是一种对象(通过它的句柄与其通信)可以为任何类型,也可以是主类型。
* 如果成员变量是指向对象的一个句柄,则必须初始化那个句柄,用一种名为
* “构建器”的特殊函数将其与一个实际对象连接起来(使用new关键字);
* 如果成员变量是一种主类型,则可在类定义位置直接初始化(句柄可以在
* 定义位置初始化)。
* 5.成员方法:方法的基本组成部分包括名字、参数列表、返回类型以及主体。
* 基本形式为:返回类型 方法名(自变量列表 ) { 方法主体 }。
* 返回类型:是指调用方法之后返回的数值类型。返回值的类型必须兼容接收者的类型。
* 方法名:是对具体的方法进行标识和引用。
* 自变量列表:列出了想传递给方法的信息类型和名称。
* 6.每个对象都为自己的成员变量保有存储空间。
* 7.成员变量的默认值:
* Boolean false , Char '\u0000'(null) , byte (byte)0
* short (short)0 , int 0 , long 0L , float 0.0f ,
* double 0.0d ,引用类型的默认值为null。
*
*Java中的名称[标识符]:
*1.名称(names)用于引用Java程序中声明的实体。声明的实体是包、类型、类型的成员(域或者方法)、参数或者局部变量。
*2.简单名称(simples)是一种单个的标识符。
*3.限定名称(qualified)提供对包和引用类型中的成员的访问。限定名称由一个名称,一个“.”符号和一个标识符组成。
*4.标识符也用于声明中,在声明中标识符决定一个实体赖以被识别的名称/。
*5.标识符还用于域访问表达式和方法调用表达式,以及语句行号和使用语句行号的break,和continue中。
*
* 8.class类格式:
* class{
* 若干个变量---特征
* 若干个函数---行为
* }
*
* 9.一个源文件中,public的类最多只能有一个,可以没有public类。
* 如果一个类是public的,那么它的名字必须和文件名相同,包括大小写。
*/

public class HelloWorld {

/*定义成员变量*/
String name = "Hello World !";
int age = 20;
BirthDay birthday = new BirthDay();

/*定义成员方法*/
public void showInfo(){
System.out.println(name+","+age+","+birthday);
}
public static void main(String[] args) {
/*
* 创建一个对象,使用new关键字,如果要使用对象中的成员变量和成员方法用"."调用。
*/

HelloWorld hw = new HelloWorld();
hw.showInfo();
/*
* 【static】关于静态方法与非静态方法的说明:
* 1.非静态的东西是对象的,因此要用:对象.方法名()
* 2.静态的东西是属于类的,因此要用:类名.方法名()
*
*/

BirthDay birthday = new BirthDay();
birthday.toString();//非静态
BirthDay.showString();//静态
}
}



class BirthDay{
int year = 1970;
int month = 1;
int day = 1;

/*
* static关键字:
* 静态的东西是属于类的,非静态的东西是属于对象的。
*/

public static void showString(){
System.out.println("1970-1-1");
}
/*
* 【覆盖方法】:
* 覆盖方法的访问权限不能低于父类,Object中的toString方法为public,覆盖方法权限也要public
*/

public String toString() {
return "BirthDay [year=" + year + ", month=" + month + ", day=" + day
+ "]";
}
}

变量初始化、方法调用、引用传递、参数传递:

/*
* 【变量初始化问题】:
* 1.类的实例变量,系统会自动为其赋初值。
* 2.局部变量必须手动初始化后才能使用。
* 3.内部块中的信息,外部块是无法了解的。
*
* 【变量作用范围级别】:
* 1.类级
* 2.对象实例级
* 3.块级
* 4.方法级
*/

class Test {
private static String name="Java学习"; // 1:类级
private int i; // 2:对象实例级,Test类的实例变量
{ int j=2; // 4:块级,属性块,在类初始化属性时候运行
}
public void test1(){
int j=3;// 3:方法级
if(j==3){
int k=5; // 4:块级
}
//这里不能访问块级的变量,块级变量只能在块内部访问
System.out.println("name="+name+",i="+i+",j="+j);
}
public static void main(String [] args){
Test t=new Test(); t.test1();
}
}

/*
【同一个类,在一个方法中调用另一个方法】:
在同一个类中:
对于静态方法,其他的静态或非静态方法都可以直接调用它。
而对于非静态方法,其他的非静态方法是可以直接调用它的。但是其他静态方法只有通过对象才能调用它。

【不同类间,在一个方法中调用另一个方法】:
不同的类之间,无论调用方法是非静态还是静态,如果被调用的方法是:
静态方法,则通过类名与对象都可以调(但通过对象的方式不建议使用,因为它属于非静态调用的方式)
非静态方法,则只能通过对象才可以调用它

【方法调用中的参数传递】:
在Java中,只有基本数据类型和String型的参数是按值传递的,其他都是按引用传递的。
【引用参数传递】:
传递的是当前对象的引用。
*/