`
oywl2008
  • 浏览: 999819 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java面向对象

 
阅读更多

Java面向对象

 Java_面向对象

  面向对象:

  面向对象是相对于面向过程的一种编程思想,它是基于面向过程的。

  面向过程:侧重于完成功能的过程。

  面向对象:侧重于完成功能的结果,强调的是对象。

  三个思想特点:

  a:更符合人思考习惯的一种思想。

  b:把复杂的事情简单化。

  c:把程序员从执行者变成指挥者。

  类与对象:

  编程语言都是为了把现实世界的事物给体现出来的,所以编程语言就应该和现实世界的事物对应。

  现实的事物分为两种:

  内在的特征:对应类的成员变量。

  外在的行为:对应类的成员方法。

  类:

  是一组相关的属性和行为的抽象。

  类的组成:

  成员变量:名词

  来自于现实世界的中的属性的一种抽象描述。

  构造方法:

  用于创建对象,对对象进行初始化

  特点:

  a :方法名于类名相同。

  b:方法没有返回值类型。

  c:方法没有返回值。

  注意:

  a:系统默认给出一个无参构造方法。

  b:自己给出构造方法,系统将不在提供。

  c:可以通过构造方法,给成员变量赋值。

  成员方法:名词+动词

  完成一些功能。

  对象:

  对象是类事物的具体的个体,也被称为实例。

  首先把事物的特征和行为体现出来,把事物转换成Java中的类,最后创建对象调用。

  应用场景:

  创建对象:类名 变量名 = new 类名();

  调用对象:对象名。方法();    对象名。变量;

  匿名对象:

  没有名字的对象。

  应用场景:

  a:调用方法只用一次的时候(可提升效率)。

  b:作为实际参数传递。

  局部变量与成员变量的区别:

  在类中的位置:

  成员变量:在类中,方法外。

  局部变量:在类的方法中。

  在内存中的位置:

  成员变量:在堆中。heap

  局部变量:在栈中。stack

  生命周期:

  成员变量:随着对象创建而存在,随着对象消失而消失。

  局部变量:随着方法调用存在,随着方法调用完毕而消失。

  初始化值:

  成员变量:有默认初始值。

  基本数据类型:

  整型:0

  浮点:0.0

  char:'\u0000'

  引用类型:null

  局部变量:必须先声明,再赋值,最后才能被使用。

  面向对象三大:

  1,封装:

  隐藏实现的细节,仅对外提供公共的访问方式。

  体现形式:

  a:类

  b:方法

  c:被private修饰也是封装的体现。

  2,继承:

  在已知类的基础上扩充新的内容。

  extends表示继承的关系。class B extends A{}

  父类的定义:

  是多个类中相同的成员变量和成员方法抽取出来的。

  特点:

  a:java中只能单继承。

  b:java中可以多层继承(体系)。

  优点:

  a:提高了代码的复用性。

  b:让类与类产生了联系,是多态的前提。

  应用场景:

  a:继承表达的是一种关系:is  a .

  b:不要为了部分功能而去继承。

  继承后父子之间的成员关系:

  成员变量:

  a:如果名字不同,直接调用本类的。

  b:如果名字相同的变量,在方法中使用的时候:

  先在局部范围查找,有就使用,

  然后成员位置查找,有就使用,

  最后在父类成员查找,有就使用,

  再没有就报错。

  构造方法:

  a:子类并没有继承父类的构造方法。

  b:子类的构造方法执行前,会先执行父类的构造方法。这个时候,并没有创建父类对象,仅仅是对父类的内容进行了初始化。

  注意:如果在父类中没有无参构造,在子类中要么用this(…),要么用super(…) .

  成员方法:

  a:如果名字不同,直接调用本类的。

  b:如果有名字相同的方法,是重写的形式(覆盖、复写)。子类使用的是自己的方法,覆盖父类的方法。

  方法重写:

  override,子类与父类方法声明相同。

  体现形式:

  a:方法名相同,参数列表相同。

  b:子类返回值类型小于等于父类返回值类型。

  c:子类访问权限修饰符大于等于父类访问权限修饰符。

  注意:

  a:父类的私用方法不能被重写。

  b:静态方法只能被静态方法重写。

  方法重载:

  overload,方法名相同,参数列表不同。

  体现形式:

  a:方法名,参数列表不同。

  b:与返回值类型无关。

  c:与返回值无关。

  this与super的区别:

  this:代表当前类的对象,谁调用,就代表谁。

  super:代表父类存储空间标识,父类的引用。

  应用场景:

  一般都在子类使用。

  成员变量:

  this.变量

  super.变量

  构造方法:

  this.(…)

  super.(…)

  成员方法:

  this.方法()

  super.方法()

  类的初始化:

  Person p=new Person();

  a:把Person.class类加载到内存。

  b:执行该类中的静态代码块,如果有,给Person.class进化初始化。

 

c:在栈内开辟存储变量p的空间,分配内存地址。

  d:在堆内开辟new Person()的空间。

  e:对成员变量进行默认初始化。

  f:对成员变量进行显示初始化。

  g:如果有构造代码块,通过它对成员变量进行初始化。

  h:通过构造方法对成员变量初始化。

  i:对象创建完毕,把堆内存的地址值赋给栈内存中的变量p.

  3,多态:

  同一个对象在不同的时刻表现出不同的状态,编译期类型与运行期类型不一致。

  根据实际的对象不同而表现出的不同状态。

  前提:

  a:有继承或实现关系。

  b:有method override.

  c:有父类或父接口引用指向子类对象。

  弊端:

  不能使用子类特有的功能。

  优点:

  提高了程序的扩展性与维护性(由继承来保证)。

  向上转型:

  把子类对象赋值给父类对象或父接口引用。

  向下转型:

  把父类或父接口引用强制转换为子类

  体现形式:

  a:具体类多态

  b:抽象类多态

  c:接口多态

  抽象类:

  多个具体的事物具备相同的方法声明,而方法体不同,抽取方法声明,定义到一个类中。

  一个没有方法体的方法是一个抽象方法,一个类有抽象方法,该类必须定义为抽象类。

 

http://www.examw.com/java/jichu/204198/index.html

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics