java类、对象学习

1.封装:将对象和操作放入一个class中,集合在一起就构成了封装。例如:

有class   A

   class    B

现在有A   example  =  new  A(new B)

这样加入了一个B,也就是说我把B这个类放入到了A中进行了封装,可能就多了一些功能。

 

2.java中局部变量必须赋初始值。成员变量不必赋初始值。

        如果成员变量没有初始化,那么他们都有自己的默认值,如:

       byte,short,int,long      的初始值都为       0

       float,double                     的初始值都为       0.0

       char                                   的初始值为           ‘\u0000’               //(Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。

                                                                                                              它为每种语言中的每个字符 设定了统一并且唯一的二进制编码,以满足跨语言、

                                                                                                               跨平台进行文本转换、处理的要求。)java采用unicode,2个字节(16位)来表示一个字符

       boolean                             的初始值为           false

 

3.java中的引用:

例子:

public class Person

{

     int a = 20;

     public void change(Person person)

    {

              person.a = 30;

    }

    public static void main(String[] args)

        {

             Person person = new person;

             int a = person.a;

             System.out.println(a);

             person.change(person);

             a = person.a;

             System.out.println(a);

        }

}

这里的引用相当于,申请的Person对象放到了堆栈中,它有一个首地址,让后让person来记住它的这个首地址,也就是说person就是这个对象的一个引用,第一个引用调用查找了成员变量的值,让后当用到person.change(person)的时候,的二个person就是新的一个引用,也指向了对象,让后调用函数改变了对象成员变量的值。

                        总结:一个对象可以有多个引用,但是一个引用只可以有一个对象,并且每个引用改变对象的数据,对象的数据都会改变。

 

4.类在内存中的分布:

如果没有  static  属性,那么如果有多个同一个类的对象,那么每个对象都有自己的属性区,也就是说用的不同的内存来保存的属性,但是方法共用同一内存区。

如果有static属性。那么每个对象都共用同一个内存。

 

5.new 完成的三件事情。

例如      A a = new A();

这一句代码执行完毕后完成了三件事情。

一:为这个对象开辟了内存空间。

二:调用了初始化函数。

三:返回了内存地址。

 

6.继承,封装,多态,重载,重写,派生。

继承,封装就不用说了。

(1)多态:父类型的引用能够指向子类型的对象,例如:Flower fl = new Rose();

                    多态必须是有封装和继承的基础。

                    如上例,在调用fl的方法时候,先到父类中查找有没有相应的方法,如果没有则编译错误,如果有再到子类中去查找有没有相应方法,如果子类没有则调用父类的方 法

                    也就是用fl来调用方法的时候,fl只能够调用父类有的方法,如果子类重写了,那么就调用子类的,不能够调用子类的新的方法,如果要调用的话就必须要强制类型转换,转换成子类的引用才能够调用新的方法

                    多态性的应用:减少了程序的代码和复杂性。这一点具体怎么实现的就不写了。

(2)重载:

    就是函数名字相同,参数类型,或者数目不同。

注意方法的返回值不决定方法的重载,例如:public  int a(int c)

                                                                        public  char a(int c)

这两个是不能叫做重载的。只和参数有关。

(3)方法的重写:

子类中有和父类中一样的方法。

就重新写入了东西,覆盖掉了父类中的方法。

例如当一个类继承了Thread类,那么就要重写run()方法,最后要调用start()方法,说明start方法调用了run方法。并实现了线程。

 

如果要不重写,也可以通过super.run()来启动。可以不放在第一行。

 

7.构造方法也是可以重载的,例如:

public class Test

{

public Test()

{

this(3);

}

public Test(int num)

{

System.out.println(num);

}

}

当调用前一个构造方法的时候可以调用到第二个构造方法。打印出3.

注意:这个this()必须是第一行语句。如同super()必须是第一行语句。

 

8.任何类如果没有显示地去继承某一个类,那么它就继承java.lang.Object这个类

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值