Java面向对象总结

                       Java面向对象总结

面向对象定义?

面向对象英文全称(Object  Oriented ),它是当今计算机界关心的重点。

分为三大点:
面向对象分析(Object Oriented Analysis)、面向对象设计(Object Oriented Design)、面向对象的编程实现(Object Oriented Programming)

为什么要有面向对象的思想?
传统软件的弊端:软件的重用性差、软件可维护性差、开发出来的软件不能满足用户要求
早期的软件采用的是结构化开发方法,其本质就是功能分解

面向对象的思想:它的本质就是一种认识事务的方法,这种认识事务的方法是一种符合人类自然思维习惯的方法

类和对象:
分类: 是一个抽象的概念,它是根据抽象的原则,对客观事务进行归纳和划分,吧具体相同特征的事务(对象)归为一个类
类: 属性和行为
通俗的一句话:  类是对象的抽象,对象是类的实例

面向对象的特征:  封装、继承、多态


类?
在java中,对象是以;类的形式实现的
对象属性是以类变量或实例变量的形式来实现的
行为的实现形式是类的方法

行为的目的:控制对象并使对象执行某些操作

Get/Set:get获取属性值,set设定属性值。为什么要这样做啦?
答:第一 Get/Set 方法允许对赋值属性的值进行有效校验
第二 有些值应该是只读的

构造方法:方法名与类名相同,没有返回值
所要执行的操作:
1) 为类分配内存
2) 创建并初始化变量
3) 调用合适的构造方法来进行附加的初始化
4) 返回引用、

控制对成员的访问:
Public: 外部类可以访问该方法或属性
Private:在该类的内部的方法才能访问他们


This 变量:
在类中,所有的属性都可以在方法中用变量名来访问
每个对象都有一个隐含的this变量,this变量可访问所有的类信息:包括属性和方法
使用方式:
        This.属性。  This.方法。 This()指示当前的类的构造方法


常量
用final来定义常量的级别 在这里是(唯一)的意思,一般常量就是public
public static final int COUNT=1;


组合:
在一个类中包含另一个类的对象成为组合,这就是功能强大的面向对象实例。
public  class  Student{}

public  class  School{
    private Student student;
}


垃圾回收机制


终结器:

类可以定义finalize()方法,从内存中删除对象
Java对象的生命周期:
1) 为对象分配内存
2) 初始化属性
3) 调用何时的构造函数
4) 在程序中使用对象
5) 在内存中分离对象的引用和对象
6) 在某个时刻,运用java的垃圾收集程序并查看那些内存不再使用
7) 垃圾收集程序释放内存


内部类:
在类中定义另外一个类,这些类被称为内部类
public class Outer{
public class Inner{
    private int i;
    public void myMethod(){…..}
}
}


内部类的范围:
外部类的任何方法中可以创建该内部类的实例。可以在方法内部定义。
在方法内部定义的内部类具有一些限制:
1) 不能访问修饰符进行声明
2) 不能被声明为静态类型
3) 具有局部范围的内部类只能访问所嵌入方法中声明为final变量,引用方法的局部变量或作为传递给所嵌入方法的参数
public class Outer{
private int a = 5;
public void Inner{
      private int i=1;
  public void myMethod(){
System.out.println(“a=” + a “, i=” + i);
}
}
public static void main(String[] args){
  Outer.Inner innerClass = new Outer().new Inner();
   innerClass.myMethod();
}
}


访问内部类:
在方法之外定义的内部类与成员变量相似,访问修饰符可以控制是否能从外部类的外部访问该内部类。  定义为public,外部类.内部类,前提是,必须存在该外部类的一个实例

Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
或者(or)
Outer.Inner inner = new Outer().new Inner();

静态内部类:
一个内部类被定义为一个final类型,我们在创建的时候就不必创建外部类的实例
直接 类与点的方式访问
同时 静态内部类在访问外部类的方法时存在如下限制:
1) 静态内部类的方法不能访问外部类的实例变量。
2) 静态内部类的方法只能访问外部类的静态变量


匿名内部类
特征:
1) 创建时不指定名称
2) 在方法内部定义
3) 没有构造函数
4) 在同一语句中进行声明和构造
5) 对事件处理非常有用




继承?
定义:就是将所有的公共的方法都纳入到一个类中,在创建这个类的子类来继承它,在添加子类所独有的功能
单一继承
从已有类创建新类的过程叫做扩展。。。。。。。java中使用extends 关键字来实现继承
public class Student extends School

super 变量引用超类的实例。
super.属性
super.方法
super() 超类

何时使用继承:
对象之间共有属性和行为,共性的

继承关系的准则:
1) 总是让子类执行超类可执行的所有行为
2) 确保子类包含超类的所有信息
3) 向子类中添加属性和行为,从而定义超类不具备但子类具备的特殊行为
4) 将共同特性迁移到超类上
5) 允许同一超类的不同子类执行相同的行为,但具体实现方式不同
Final类
将类定义为final意味着该类不能派生
何时用:1)类封装了所需使用的所有功能方法
        2)类包含了不希望对他人公开的核心代码


抽象类
将类定义为abstract 类型意味着该类必须带有子类,而该类本身不能被实例化
public abstract class School{
}
抽象类至少包含一个抽象方法
public abstract void tree();


访问修饰符:
访问修饰符 本类 子类 不同包的子类 不同包的非子类
Public Ok Ok Ok Ok
Protected Ok Ok Ok No
Private Ok No No No


重写与重载方法:
为改变子类继承方式而重新定义方法的过程叫重写方法。方法的名称、参数表和返回类型在超类和子类中必须保持一致。
重写方法的最终限制是子类中的方法能够且必须重写超类中的抽象方法

方法名称相同,参数表不同,这些方法称为重载方法
public class Paint{
   public void draw(int width,int height){}
   public void draw(String name){}
}

注意:重载方法发生在同一个类中,方法名相同、方法参数表不同。如果方法名和参数表相同,返回类型不同,java认为这是一个语法错误。




接口?
接口定义了一组公共方法由所有需要提供这些功能的类共同实现
接口使用interface来声明,并且所有方法都必须是abstract类型,不能为其提供任何默认行为。
public interface Serviceable{
      public void changeOil();
      public void tuneUp();
}

类只能由一个超类扩展而成,即单一继承,但是可以实现任意多个接口
使用关键implements
public class Car implements Seriviceable,School{

}

定义接口
[public] interface iname [extends i2name]
可包含关键字abstract,通常是隐式使用。
可包含关键字 public,通常是隐式使用。
可包含static、final 关键字,通常是隐式使用。


实现接口
[public] [qualifiers] class classname implements iname [,i2name]
类可以实现任意数量的接口。
类可以是abstract 或 final 类型
类可以扩展另一个类,同时实现任意多个接口


接口与抽象类的对比
1) 如果功能与对象自身密切相关,则在超类中使用抽象的基类方法
2) 如果该功能只是对象的辅助行为,则可使用接口
3) 如果该功能可被全局行地其它无关对象,则可使用接口

你可能感兴趣的:(java,编程)