Java的对象与类

Java中的对象与类

一. 类的定义

1. :是构造对象的模板或蓝图,类是独立在main方法外但又由main调用和测试,有独立性但却缺少自主性.

2. 类的调用通过在mian方法中建立对象实现调用

3. 类中的成员方法和成员变量的访问都需要在main方法中通过建立对象来访问

4. 类的建立大大减少工作难度,对于程序得可修改性大大提高,同时使得mian方法所占的内存减少

5. 类将程序碎块化,使得在写程序是如搭积木,只需要将需要的类通过main方法进行连接,就能得到预取效果

 

2.类的创建方法:

class 类名称{

   成员变量;

   成员方法(中的变量称为局部变量);

}

 

3.类的调用方法:

  public static void mian(Strings [ ] args){

类名称 对象名称=new 类名称();   //创建类的对象

对象名称 . 成员变量(软件自动提示选择所需的变量名称);

对象名称 . 成员方法(软件自动提示选择所需的变量名称);

}

 

4.类对象在字节码文件中的流程

  1)主方法先在栈内存中开辟出一个存储main方法的内存空间

  2)main方法开辟出来的空间内建立类的对象,同时生成地址

  3)在对象调用并成员变量赋值后,在对象生成的地址上,在堆内存中存储赋值(成员变量在赋值前为该变量的默认初始值)

  4)在成员方法赋值后,也在堆内存中存储(成员方法暂时性在栈内存中开辟空间,方法调用后自动删除)

 

4.成员变量和局部变量的区别

  1)位置不同:成员变量在类中,方法外

            局部变量在方法中

2) 初始状态不同:成员变量有系统默认初始化,可以不需要给定值

              局部变量必须定义初始值

3) 内存空间不同:成员变量在堆内存中

                局部变量在栈内存中

4) 生命周期不同:成员变量跟着类走,类的加载而加载,类的消失而消失

                 局部变量随着方法的调用而存在,方法的调用完毕而消失

 

 

二. 匿名对象

1. 匿名对象建立的方法

对象建立:       类名称 对象名称= new 内名称();

匿名对象建立:   new 类名称();

 

2.匿名对象的使用方法和注意事项

   A.匿名对象在使用成员方法和成员变量时和不匿名对象方法一样(new 类名称.成员变量/成员变量)

   B.匿名对象在接口中经常使用

   C.在实际开发中一般只使用一次,不建议多次使用,防止内存溢出的现象(因为new一直在堆内存中开辟空间)

 

三. 形式参数

1. 形势参数两种类型的分析

A. 基本类型:形式参数的改变对实际参数没有任何影响

B. 引用类型:形式参数的改变会直接影响实际参数

引用类型具体分析

 

 class Student{                 //1       

public void show() {

System.out.println("好好学习,天天向上....");

}

}

class StudentDemo{         //2

Student () ;

public void method(Student s) {     //形式参数现在引用类型  

s.show();

}

}

method方法中的Student s 形势参数是引用类型,Student类中,所以要建立Student中的对象后,method方法才能使用(好比测试类通过建立对象来调用类2中的方法,但是类2中方法中的引用类型需要对类1建立对象后才能实现自身方法的使用)

  public class ArgsTest {                 //测试类

public static void main(String[] args) {   

     (1)建立StudentDemo的对象

      StudentDemo sd=new StudentDemo();

(2) 建立Student类的对象

 Student s=new Student();

     Sd.method(s);   

}

通过在main方法中建立两个类中的对象,实现类2中应用类型Student s可以应用的对象,从而实现了调用StudentDemo中的method方法

 

 

 

四. 封装和private关键字

1. Private的使用意义

Private在修饰类中的成员变量时,使得被修饰的成员变量无法被类之外(包括测试类)的方法进行访问,但被修饰的成员变量在该类中可以被任意访问

如外部类(包括测试类)需要访问被private修饰的成员变量时,需要公共的访问方法(:set/get xxxx 方法),将被private修饰的私有化变量进行公有化转化(只是一种方法,但依然不改变该变量的私有性,也就是private修饰的成员变量的私有性不会因为公有方法而改变,公有性也只存在与该方法中,如其他外部类不使用该公共方法依然无权访问该变量)

Private修饰,也体现了一种封装性,使得程序更加稳定,排错更加方便(出错处可以在对应的类中修改).

 

2. private的使用方法

private  数据类型  数据名称;

※当成员变量和局部变量名称一致的情况,遵循就近原则

 

3. set / get xxxx 方法

set / get xxxx是一种可以公有化的方法.

set / get xxxx的书写基本格式

Class  类名{

  private  数据类型  数据名称1;

  Public  void  set方法名1(数据类型 数据名称2){

        数据名称2=数据名称1;

 }

  public 数据类型 get方法名2(){

        Return 数据类型2;

 }

}

 ※在main方法中调用数据类型1,先通过用方法1(set)的赋值,后通过方法2(get)获取到数据类型1.

 

4. 关键字this的使用

This的使用意义:为了见名知意,减少中间数据类型2的繁琐,使用的this方法,只需要在被修饰的私有化变量前加this,就可以让set方法中的数据名称2和被私有化的变量相同.

      Class  类名{

  private  数据类型  数据名称1;

  Public  void  set方法名1(数据类型 数据名称1){

        This数据名称1=数据名称1;

 }

  public 数据类型 get方法名1(){

        Return 数据类型1;

 }

}

五. 构造方法

1. 构造方法作用:是给对象进行初始化的过程,同时构造方法也属于类的组成部分,分别为:成员变量,构造方法,成员方法.()

※构造方法的方法名与类名相同,并且构造方法没有关键字void

 

2. 构造方法的注意事项:

1) 如果没有提前写出无参构造,系统会默认提供无参构造(系统默认的无参构造会显示地址值)

2) 如果提前写出无参或者有参构造,那么系统不会在提供无参构造(建议永远给出无参构造)

 

3. 构造方法的书写格式

   Class  类名{

public  类名(){

 }

   }

 

六. 成员方法的分类

1.成员方法的分类:

 1)按照返回值划分:   void的形式:没有具体的返回值

  void形式:有具体返回值

 2)按照参数进行划分: 空参构造

   有参构造

各种类型的例子

     class Student {

 private  String  name ;

 private  String  age ;

 public Student() {

  }

    //有返回值没有参数的

public String show() {

return "helloworld" ;

}

//没有返回值,有参数的情况

public void method(String s) {

System.out.println(s);

}

//没有返回值,没有参数的情况

public void function() {

    System.out.println("function student...");

}

//有返回值,有参数的情况

public String function2(String s1,String s2) {

return s1+ s2;

}

}

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_41923771/article/details/79921748