java对象

来源:互联网 发布:网络说说控红人qq号 编辑:程序博客网 时间:2024/05/19 00:54
  • 面向对象是相对面向过程而言,面向对象和面向过程都是一种思想,面向对象时基于面向过程的。
  • 面向对象三大特征:封装,继承,多态。
  • 匿名对象调用方法有意义,调用属性没有意义!
  • 当对象的方法只被调用一次时,可以使用匿名对象来完成,这样写比较简化。
  • 匿名对象可作为实际参数进行传递。
  • 构造代码块:作用:给对象进行初始化;对象一建立就运行,而且优先于构造函数执行。
  • 构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化。
  • this:哪个对象调用this所在的函数,this就代表哪个对象。
  • static修饰的成员变量,在内存中被共享,不必每个对象都要存储,所以是节约内存空间的。
  • 用static修饰后,可以用类名直接调用。
  • static的特点:1)随着类的加载而加载(随着类的消失而消失,说明他的生命周期最长);2)优先于对象存在(静态先存在,对象是后存在的);
  • static的注意事项:静态方法不能调用非静态的方法或属性;原因是静态方法是跟类同时加载到内存中的,但是非静态是跟new对象的时候同时存储于内存中,类是优先于对象的,所以静态不能访问非静态的。
  • 静态方法中是不能出现this,super关键字的。原因跟上同,this,super是对象调用的,所以不能出现。

什么情况下创建静态方法呢?

答:如果当前方法中没有使用该类中的属性数据时,那么该方法就应该创建成静态的。

 

创建一个对象的先后顺序?

1)找类名.class文件并加载到内存中。

2)执行该类中static代码块,有的话,给类名.class进行初始化。

3)在堆内存中开辟空间,分配内存地址。

4)在堆内存中建立对象的特有属性,并进行默认初始化。

5)对属性进行显示初始化。

6)对对象进行构造代码块初始化。

7)对对象进行对应的构造函数初始化

8)将内存地址赋给栈内存中的变量。

 

 

单例对象分为两种:饿汉式和懒汉式;定义单例时最好用懒汉式;

 

继承:

1)提高了代码的复用性;

2)让类与类之间产生了关系,有了这个关系,才有了多态的特性;

 

java语言中:只支持单继承,不支持多继承;但是支持多层继承;

因为继承的2个父类中存在相同的方法,而内容不同,则子类就不知道要调用哪个父类的方法了。

 

关键字super是用来继承父类的属性或者是方法。

覆盖(重写):当子类和父类的函数一样时,用子类对象调用该函数,会运行子类函数的内容,父类函数会被覆盖。需要注意的是:子类的权限必须大于等于父类的权限,才可以覆盖,否则编译失败。

重写:子类父类方法要一模一样;


重载:只看同名函数的参数列表;


子父类中的构造函数。

在对子类对象进行初始化时,父类的构造函数也会运行,那是因为子类的构造函数默认第一行有一条隐式的super()语句;

super():会访问父类中空参数的构造函数。而且子类中所有的构造函数默认第一行都是super()。

如果显示的在子类中调用父类的有参构造函数,则就不会调用父类中的无参(默认)构造函数。


子类构造函数的第一行也可以是this语句来访问本类中的构造函数,但是子类中至少会有一个构造函数会访问父类中的构造函数。


final关键字:表示最终,是一个修饰符。 可以修饰类,函数,变量;

  • final修饰的类不可以被继承。
  • final修饰的函数不能被覆盖(重写)。 
  • final修饰的变量只能被赋值一次,不能被改变。


abstract关键字:表示抽象,可以修饰类,函数(方法)。

  • 抽象方法一定要在抽象类中,并且抽象方法是不能有方法体的。
  • 抽象类不能用new创建对象,因为那样没有意义(没有方法体,所以没意义)。
  • 抽象类中的抽象方法要被使用,必须由子类来复写所有抽象方法,才能有子类对象去调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
  • 抽象类中可以不定义抽象方法,定义抽象的类的作用就是不让该类被实例化。
模板方法设计模式:在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去,由该子类去完成。

interface接口:是一个特殊的抽象类,他有自己特定的格式;
  • 接口类中的变量声明格式:public static final 变量名 = 赋值;
  • 接口类中的方法格式:public abstract 返回类型 方法名(参数类型  参数);
  • 接口中必须按照以上类型声明,如果不按照以上格式声明,则java编译器会自动把你的代码写成以上的class文件。
  • 接口不能被创建对象,因为他有抽象方法。
  • 接口可以被类多实现。也就是说一个类可以实现多个不同的接口。
  • 接口与接口之间的关系是继承关系,不能是实现。


 

原创粉丝点击