java(week02) 类和对象(上)

一、类和对象的创建

类的结构包括对象和方法;

创建类的方法:

1.创建类,设计类的成员

2.创建类对象    格式:类名 对象名=new 类名()

3.通过“对象,属性”或“对象,方法”调用对象的结构

代码如下:

public class classTest {
       public static void main(String[] args)
       {
    	   Person p=new Person();//创建对象
    	 //调用类成员
           p.eat();
    	   p.setNameandAge("张三",18);
    	   System.out.println(p.name+"\t"+p.age);
       }
}
class Person//创建类
{
//创建类成员
	String name;
	int age=1;
	public void eat()
	{
		System.out.println("人可以吃饭");
	}
	public void setNameandAge(String n,int a)
	{
		name=n;
		
		age=a;
	}
}

匿名对象:

1.创建对象时,没有显式的赋给一个对象名,即匿名对象

2.匿名对象只能使用一次

以上面代码为例,例如:

new Person().eat();

new Person().age=18;
       

属性(成员变量)和局部变量的对比:

相同点:1.定义格式:数据类型 变量名=变量值

2.先声明,后使用

3.都有其作用域

不同点:

①在类中声明的位置不同:

属性(成员变量)直接定义在类的一对{}内;

局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量

②属性(成员变量):可以在声明属性时,指明其权限,使用权限修饰符.(private,public,protected,缺省)

局部变量:不可以使用权限修饰符

③属性(成员变量)有默认初始化值;

局部变量没有默认初始化值,在调用他之前,要对其显式赋值

④属性加载到堆空间

局部变量加载到栈空间

对象数组

定义格式:类名[] 对象名=new 类名[长度];

例如Student[] stus=new Student[10];

通过循环对数组元素赋值

for(int i=0;i<stus.length;i++)
{
//给数组元素赋值
    stus[i]=new Student();
//给属性赋值,例如成绩【0,100】
   stus[i].score=(int)(Math.random()*(100-0+1);
}

简要说明以下JVM内存结构:

编译完成后,生成一个或多个字节码文件。在使用JVM中的类的加载器和解释器对生成的字节码文件进行解释运行。意味着需要在字节码文件对应的类加载到内存中,涉及到内存解析

JVM规范

虚拟机栈,因为平时提到的栈结构,我们将局部变量存储在栈结构中,

堆,我们将new出来的结构(数组,对象)加载在堆空间中。其中对象的属性(非static的)加载在堆空间中

方法区:类的加载信息,常量池,静态域..

关于方法的重载的说明:(作用域要相同)

1.在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可

关于可变个数形参:允许直接定义能和多个实参匹配的形参(JavaSE 5.0)

1.格式:数据类型...变量名

2.可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载

3.可变个数形参的方法与本类方法名相同,形参类型也相同的数组之间不构成重载,二者不能并存

4.可变个数形参在方法的形参中,必须声明在末尾

5.可变个数形参在方法的形参中,最多只能声明一个可变形参

二、封装性

封装性的体现:

将类的属性私有化(private),同时,提供公共的(public)方法来获取和设置此属性的值

拓展:

 不对外暴露的私有方法也是封装性的体现

1.四种权限(从小到大):private、缺省、protected、public

2.这个四种权限可以修饰类及类的内部结构,属性,方法,构造器,内部类

修饰类只能用缺省或public

构造器(constructor)的使用

一、构造器的作用

创建对象   例如: Person p=new Person();  Person()就是一个构造器

初始化对象的属性

1.没有显式调用定义类的构造器,系统会默认提供一个空参的构造器,默认构造器的权限与所定义类的权限相同

2.定义格式:  权限修饰符 类名(形参列表){}

3.一个类中定义多个构造器,彼此构成重载

4.显式定义构造器后,系统不在提供默认空参构造器

拓展:

满足类是公共的、有一个无参的公共构造器、有属性,且有对应的get.set方法成为JavaBean;

this的使用

this可以用来修饰属性、方法、构造器

this可以理解为当前对象

在类方法中,可以使用“this.属性”或“this.方法”的方式,调用当前对象属性或方法,通常情况下省略this.  如果方法的形参和类的属性同名时,则必须显式定义“this.变量”,表明此变量是属性。

如下所示情况:

class Person
{
   private int age;
   public void setAge(int age)
  {
     this.age=age;
   }
};

package关键字

使用package声明类或接口所属的包,声明在源文件首行

命名时每“.”一次,代表一层文件目录

补充:同一个包下,不可以命名同名的接口、类.

不同包下可以

import关键字

1.在源文件中显式的使用import结构导入指定包下的类、接口

2.声明在包的声明和类的声明之间

3.如果导入多个结构,并列写出即可

4.使用“xxx”.*的方式,表示可以导入xxx包下的所有结构,如果使用xxx子包下的结构,仍需显式导入

5.如果使用的类或接口是java.lang包下定义的,则可省略import结构

6.如果使用的类或接口是本包下定义的,则可省略import结构

7.如果在源文件中,使用了不同包下的同名类,则必须至少有一个类需要以全类名的方式显式

8.import static:导入指定类或接口的静态结构:属性或方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值