javase-面向对象

来源:互联网 发布:小说改编的悬疑网络剧 编辑:程序博客网 时间:2024/04/26 16:02

一.面向对象的基本特征

1.封装

是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

好处:将变化隔离;便于使用;提高重用性;安全性。

封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。

2.继承

javase-继承

3.多态

二.访问控制符


注:protected修饰的,在不同包中通过对象不能访问,但继承后能在子类中访问。

三.成员变量(属性)与局部变量

1.局部变量必须初始化,而没有初始化的成员变量则会自动赋一个默认值。

2.成员变量直接定义在类中。

   局部变量定义在方法中,参数上,语句中。

3.成员变量在这个类中有效。

局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域。

4.成员变量存在于堆内存中,随着对象的产生而存在,消失而消失。

局部变量存在于栈内存中,随着所属区域的运行而存在,结束而释放。

四.构造方法

1.对象初始化时调用。

2.如果一个类中没有写构造方法,会有一个默认的无参构造方法,如果写上自定义的构造方法,默认的构造方法就不再起作用。

3.构造方法可重载,但不可重写,因为构造方法不可继承。

4.static不能修饰构造方法,因为构造方法是类创建对象时调用的,必须依赖于对象,而static则不依赖于对象。

5.final不能修饰构造方法,因为构造方法不能被继承,用final修饰方法的目的是不允许被重写,所以final修饰构造方法没有意义。

五.创建对象的过程

如:Cat c = new Cat();

1.创建对象的第一步在方法区中查找对象对应的类是否已经被加载,如果没有被加载,就加载这个类Cat.class,如果已经被加载了,就不在加载了。

2.方法区中加载不是类型的全部,而是在类型中有定义并且实现的方法。

3.加载完毕以后开始创建对象,对象在堆区,对象中会保存属性和方法的指针。

 

c.init("小张", 250, 250, 250, 520);

方法的调用过程

1.在Cat类型的定义中找到init方法的定义。找不到就报错。

2.找init方法的修饰符,看看能不能被调用,不能调用就报错。

3.从对象名保存的地址开始查找方法的指针,找到指针以后,从指针位置找到方法,并执行。

内存图:


六.this

1.this表示当前对象。

/*    2015年12月24日13:00:42    目的:this的用法。*/class A{    public int i;    public A(int j)    {        i = j;    }    // public void show(A*this)  this代表当前正在调用show方法的对象。    public void show()    {        //System.out.printf("i = %d\n", (*this).i);        System.out.printf("i = %d\n", i);    }}public class This_1{    public static void main(String[] args)    {//aa1和aa2可以通过隐藏的指针this,共用同一个方法show        A aa1 = new A(10);// aa1.show(aa1)A aa2 = new A(20);// aa2.show(aa2)        aa1.show();aa2.show();    }}/****************结果***************i = 10i = 20*/

2.this()表示调用构造方法,但只能在构造方法中使用

原创粉丝点击