java菜鸟成长历程 对象和类

.

1.结构化程序的缺陷:(1)缺乏对数据的封装; (2)数据和方法的分离;

2.抽象数据类型:将不同类型的数据的集合组合成一个整体来描述一个新的事物

3.类定义了一种抽象数据类型:类不但定义了抽样数据类型的组成(成员变量),同时还定义了可以对该类型实施的操作(方法);

4.先创建类,再创建对象;一个类可以创建多个对象(结构相同,数据不同)

5.类是一种数据类型,只能包含:

        (1)对象所共有的特征:变量属性

        (2)对象所共有的行为:方法

6.new创建对象,创建对象的过程称为实例化;new之后成员变量有默认值

         new 类名();//创建对象

.引用类型变量

1.引用类型变量可以存放该类对象的地址信息,通常称指向该类对象;当一个引用类型变量指向该类的对象时,可以通过这个变量对对象进行访问;

2.除了8种基本类型外,用类,接口,数组等声明的变量都是引用类型变量,简称引用

3.可以通过引用访问对象的成员属性或调用方法

4.引用类型变量可以赋值为空(null),表示没有指向任何对象

.补充

1.mian()里的变量为局部变量

   Cell    c=  new  Cell();

  类名   引用     对象

 JVM将内存分为三块,其中一块为栈,一块为堆,一块为方法区;堆中存放对象(new一个才在堆中开辟空间),栈中存放局部变量;引用存于栈中,开辟内存里面存放着对象在堆中的地址信息

2.(1)基本类型之间画等号----赋值

  (2)引用类型之间画等号----指向同一个对象

.方法的重载

1.方法的签名:包含方法名和参数列表

 一个类中,不可以有两个方法的签名完全相同,允许多个方法名相同,但参数列表不同;称为方法的重载;

.构造方法:

1.用于对成员变量初始化,与类同名,没有返回值类型,也不写void;构造方法可以重载;

2.构造方法在创建对象时被自动调用;若自己不写,系统默认无参构造方法;

3.this关键词

(1)this指代当前对象,谁调用指谁

(2)用法:this.成员变量------访问成员变量  this.方法()---------访问方法

        this()----------------调构造方法

    类中方法只要用到本类的成员变量,前面默认都有this;

.引用类型数组

  1.引用类型数组定义:Student [] student=new Student[4];

  2.引用类型数组初始化:new之后 student中每个元素为null;没有指向具体对象                      

  3.int [] [] as=new int [4][];//数组类型数组; 数组也是一种数据类型;

  4.数组的元素可以看成数组对象的成员变量

  5.如果希望每个元素都指向具体的对象;需要针对每个数组元素进行”new”运算;

     否则: Student[0].name=”张三”;//空指针异常

.对象内存管理

  1.编译好的java程序需要运行在JVM中;

  2.程序,无论代码还是数据,都需要存储在内存中,JVMjava程序提供并管理所需要的内存空间;

  3.JVM内存分为”,””,”方法区三个区域;分别用于存储不同数据;

   (1)堆内存:JVM在其内存空间开辟一个称为的内存空间;这部分空间用于存储使用new关键字所创建的对象;

         *访问对象需要依靠引用变量;当一个对象没有任何引用时,被视为废弃对象,属于被回收范围,该对象中的所有成员变量也随之被回收;

         *成员变量生命周期为:从对象在堆中创建开始到对象从堆中被回收结束;

   (2)栈内存:JVM在其内存空间开辟一个称为的内存空间;这部分用于存储程序运行时在方法中声明的所有局部变量;

           Java,调一个方法,就给该方法分配一个栈帧”,栈帧中存着局部变量,方法调用结束,栈帧被清除,局部变量失效;

   (3)方法区:用于存放类的信息,java程序运行时,首先通过类装载器载入类文件的字节码文件信息,经过解析后将其装入方法区,类的各种信息(包括方法)都在方法区存储

  4.垃圾回收机制(GC):JVM自带的一个线程(自动运行程序),用于回收没有引用的对象;

  5.内存泄漏:不在使用的内存没有被及时回收;严重的会因内存占用过多导致程序崩溃;

                   * GC线程判断对象是否可以回收的依据是该对象是否有引用指向,因此,当确定该对象不在引用时,应及时将其引用设为null;

  6.局部变量与成员变量差别

     (1)局部变量:定义在方法中;没有默认值,必须自行设定初始值;方法被调用是,存在栈中,方法调用结束,从栈中清除;

     (2)成员变量:定义在类中,方法外;有默认值,可以不显示初始化;所在类被实例化后,存在堆中,对象被回收时,成员变量失效;

.继承: 避免代码重复;

  1.通过extends关键字实现类的继承,java不支持多重继承; java继承有传递性;

  2.子类的构造方法中必须用super调用父类构造方法;若不写子类会自动默认调用父类无参构造方法:super();//不写默认; 若调用父类有参构造方法,需写出super(参数);super必须位于子类构造方法中第一位;

 3.定义父类型的引用可以指向子类对象(向上造型),但只能访问父类定义的成员,不能访问子类的扩展部分;

 4.方法重写:

   (1)子类可以重写继承自父类的方法,即方法名和参数列表与父类的方法相同,但方法实现不同;当子类对象的重写方法被调用时,运行的是子类重写的版本;(看对象)

   (2)可以通过super调用父类的版本;

 5.重载与重写的不同

   (1)重载:指在一个类中定义多个方法名相同但参数列表不同的方法;编译时,根据参数的个数和类型绑定不同的方法;(编译期)

   (2)重写:指在子类中定义与父类完全相同的方法,在程序运行时,根据对象类型(而不是引用类型)的不同调用不同的版本;(运行期)

6.访问控制:   *全局限定名:包名+类名;

 (1)package语句:包名;解决命名冲突;必须写在java源文件的第一行;

 (2)import语句:对你要访问的类的全称进行声明;之后该源文件可以直接用类名访问;.封装:       

* 对外提供可调用的,稳定的功能;内部细节外界不可访问

1.封装:封装就是把抽象出来的数据和对数据的操作(方法)封装在一起,数据被保护在内部,程序的其他部分只能通过被授权的操作(成员方法),才能对数据进行操作。修饰词:private,public ,protected,默认访问控制

2.static:(1)static修饰的成员变量(静态变量)不属于对象的数据结构;是属于类的变量,用类名来引用;static成员变量和类的信息一起存储在方法区,而不是堆中;无论多少对象共用一份;

             (2) static修饰的方法是静态方法(属于类的),没有隐式的this;用类名引用

                  int num=0;//属于对象        //非静态方法可以直接访问静态变量和非静

static int sum=1;//属于类    //态变量;静态方法只能访问静态变量

                static void show(){

                num++;//错误  sum++;//正确  (this指代当前对象,没有this表示没有对象)           

3.static: static{语句块}

属于类的代码块在类的加载期间执行,只执行一次,用来在软件中加载静态资源

4.final关键词:    

     (1)修饰的成员变量不可改变;(2)修饰的方法不能被重写;(3)修饰的类不能被继承

5.static final修饰的成员变量为常量,声明同时必须初始化,建议全部大写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值