java基础知识点---面向对象

引用:除了基本数据类型之外的引用类型都是引用类型,引用类型都是用两块内存。

构造函数: 1. 构造函数和类名相同并且没有返回值的方法。前边不能加void,否则就变成了普通的类方法。

               2.是用来初始化对象的函数。使用new +  构造方法 创建一个新的对象。

重载: 指的是一个类中可以有多个具有相同的名字但是参数不同的方法(形参的个数,顺序,数据类型至少有一个不一样),和函数的返回类型是否相同无关。

this关键字:  this可以是看作一个变量,它的值是当前对象的引用。

              用法: 1 当成员变量和局部变量重名的时候,如果想在局部变量的方法中访问同名的成员变量时,                  要使用   (表示成员变量)this.name = name(局部变量)。

                         2.当类中有多个重载的构造方法时,在构造方法中可以使用this()来调用其他的构造方法,                    但是必须注意它必须作为构造方法中的第一条语句。

static关键字: 1.被static修饰的成员变量叫做静态成员变量,它是该类的公共变量(系统只为该变量分配一个存储空间,每个对象都要在这个空间来访问该变量。也就是说任何一个对象修改了静态变量,那么其他对象访问的都是该变量修改后的值) 。    可以通过类名的方式(类名.类变量)的方式访问,当然也可以通过类对象名(类对象名.类变量)的方式访问。

                    2.在类的静态方法中可以直接访问静态变量和静态方法,但是不能够直接访问非静态的方法,不能够用this关键字和super关键字。

内存解析:   stack(栈内存):  存局部变量   形参

                    heap(堆内存):  存 new出来的东西        成员变量

                   data  seg(数据区):  存 一切static的东西     字符串常量

                   code  seg(代码区):  存放  类的代码

 继承:   是使用extends 关键字 实现类的继承机制。是指一对象直接拥有另一对象的属性和方法。

           1.父类的构造函数不能被子类继承。

           2.子类不能继承或者访问父类的private属性和方法。

访问机制:   110109_QlC2_3299202.png    

重写\覆盖:   就是子类不满意父类的方法,对从父类继承来的方法进行重写。

                  1.子类重写的方法必须与父类被重写的方法有相同的方法名称  参数列表  和返回类型。

                 2.子类重写的方法不能使用比父类被重写方法更严格的访问权限。

super关键字:  子类中想使用父类中的非private类型的变量和方法就用super。

                   1.如果想在子类的构造方法中使用父类的构造方法,那么super 的调用语句必须放在子类构造方法的第一行。

                  2.子类的构造方法中必须调用其父类的构造方法。

                      子类在自己的构造方法中使用 super(形参argument_list)调用父类的构造方法;使用this(形参)调用的是本类的构造方法。

Object类:是所有java类的根基类。如果在类的声明中未使用extends关键字指明其根基类那默认基类就为

Object类。

equals方法:1.public boolean equals (Object obj)方法

                      2. Object 的euqals方法定义为 x.equals(y)  当 x和 y是同一个对象的引用时返回true 否则就返回false;  (此时和“==”一样)

==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。(如果指向的是堆中同一块内存就返回true)

          113021_a4y9_3299202.png

     简单来说重写后的equals就是比较堆中两个对象的内容是否相同;  “==” 比较的是栈中的两个对象指向的是否是同一个对象(就是堆中同一个内存)

                     3。有一些类比如String,  Date 等 重写了Object的equals方法,调用这些类的equals方法,

x.equals(y),当x和y所引用的对象是同一类对象(都是String或者date)并且属性的内容相同时(并不一定时相同的对象),返回值为true,否则返回值是false.  (也就是说只要堆里边的内容相同就返回true)

对象的转型(casting):1.一个基类的引用类型变量可以“指向”其子类的对象。

                                   2.一个基类的引用不可以访问其子类对象新增加的(属性和方法)

               3.可以使用引用 变量 instanceof类名 来判断该引用型变量所“指向”的对象是否属于该类或者是该类的子类。

         4.子类的对象可以当做基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting).

多态: 构成多态的三个条件1.要有继承。  2.要有重写。  3,父类的引用指向子类的对象。就是如下

             [父类] Collection    [引用] c = new       [子类的一个对象或者是方法] ArrayList( );

      这种用法不能够访问子类特有的方法。

抽象类:  1.用abstract 关键字来修饰一个类时,这个类叫做抽象类。用abstract来修饰一个方法时,该方法   叫做抽象方法。

            2.抽象类不能够被实例化。

           3.抽象类可以有也可以没有抽象方法,而有abstract方法的类必须定义为抽象类。也就是说:含有抽象方法的类必须声明为抽象类,抽象类必须被继承,抽象方法必须被重写。

            4.抽象方法没有方法体,而不是方法体为空。也就是说:抽象方法只需声明,而不需要实现。

final关键字: 1.final修饰的类不能被继承。

                      2.final修饰的方法不能被重写。

                    3.final修饰成员变量时可以理解为常量,必须赋以初值(可以在声明的时候赋值也可以在类的构造方法中赋值) 并且该变量不能够改变;        final修饰局部变量时,局部变量只能赋一次值;          final修饰方法中的参数时,该参数的值不能够被改变。

接口:接口就是抽象方法和常量值定义的集合。  从本质上讲,接口就是一种特殊的抽象类,这种抽象类只包含常量和方法的定义,而没有常量和方法的实现。

          1.接口和抽象方法一样,不能进行实例化。(接口是用interface关键字来修饰)。

          2.接口中的每个方法默认修饰都是public  abstract. 这样在实现接口中方法的时候,必须声明方法为

public 的。

          3.接口中所有的变量都是  public  static final.

           4.一个类可以同时实现多个接口,接口之间用“,”分开。      和继承抽象类一样,实现接口后,要么实现其中的所有方法,要么声明为抽象类。

          5.接口可以继承其他的接口,增加新的属性和抽象方法。

toString方法:

toString方法是一个自我描述方法
    方法本身返回的是该对象的实现类的 类名 + @ + hashCode 的值
    可以通过重写toString方法来自定义自我描述

转载于:https://my.oschina.net/u/3299202/blog/910421

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值