面向对象的特征

来源:互联网 发布:网络运营商资费 编辑:程序博客网 时间:2024/05/07 21:29

                     面向对象的特征
关键字:封装,继承,多态,抽象
1. 封装
²  实现细节隐藏的过程称为封装。
²  优点:1)隐藏细节,具备一定的安全性
  2)代码重用
² 访问修饰符:
1)  public:访问权限最高
2)  protected:只有非同包非子类不能访问
3)  默认(不写):同包就可以访问
4)  private:访问权限最低,只有同一个类才能访问
面向对象的特征


² 封装是使类中的所有成员变量都是private(只有同一类中才能调用,跨类不不能直接调用),并使用修

改器和访问器来访问这些成员变量(属性);
1)  修改器(有参无返回值):setName 比如:public void setName(String name){
This.name = name;
}
2)  访问器(无参有返回值):getName 比如:public String setName(){
Return name;
}
² 静态(static)(this不能出现在其中)方法和属性:(只有在定义常量时用到静态,其他时候尽量少用


1) 静态的属性和方法在类加载的时候(对象产生之前)就加载到内存中了,并且全局共享,类的成员变量

或方法不与类的特定实例关联,任何其他类可以直接访问静态成员变量或调用静态方法(不需要类的一个实

例),注意,静态属性(变量)是全局的,即任何一个方法改变了它的值,它的值就全局改变,其他方法使

用它时必须是改变后的值;
2)  以类名.(点)的方式来访问,如 Television.name = “松下”
3)  静态初始化块: static{
} 只执行一次;(静态初始化块是一组当类被JVM的类加载器加载时执行的语句)
4) 静态方法不能直接访问非静态方法,因为静态方法是在类加载的时候执行的,那个时候还没有new对象,

所以必须new一个类的对象才能使用该类下的非静态方法。
2.      继承:
²  概念:编写一个类拥有其父类所有的属性和方法(除了构造方法),这就称为继承。
²  优点: 
1)  父类属性和方法的重用
2)  扩展父类的属性和方法
²  使用:extends实现继承
²  所有类的父类都是Object
²  在Java中只有单根继承,即只能有一个父类;
²  super:
1) 调用父类的构造方法:子类默认要调用父类的无参构造方法(即在子类中有隐式的super()无参方法

去调用父类),所以如果我们重新在父类中写了一个有参的构造方法,把父类的默认构造方法顶掉了,必须

在子类构造方法中显式的添加对应参数的父类构造方法或者在父类中再添加一个无参的构造方法;
2)  调用父类的方法:super . 父类方法名
² 子类对象的创建:会先调用父类的构造方法,父类调用父类的父类,直到OBJECT,然后再一步步初始化下

来(要执行父类构造方法中的代码),最后初始化子类(所以如果父类有输出,则在子类输出要显示出来)
² 重写:在父类和子类中,方法名相同,参数列表相同,返回类型相同,子类方法的访问修饰符不能小于父

类的访问修饰符(不能重写父类的构造方法)
²  final:
1)  修饰类,则该类为终态类,终态类不能有子类,不能被继承
2)  修饰方法,则该方法为最终方法,不能被子类重写
3)  修饰变量,该变量为常量,不能被改变
² toString():默认为在OBJECT类中。如果直接打印如:System.out.println(man);表示直接打印man对象

的内存地址,如果想用其他功能必须对toString()进行重写;
 
3.      多态:方法的重写、重载与动态连接构成多态性
²  概念:相同的行为,不同的体现方式
²  实现:
1)  重载 —— 静态多态
2)  重写 —— 动态多态
3)  向上转型:子类的对象可以直接赋值给父类类型的变量
如:People  p = new Man();定义一个父类类型的引用指向子类类型的对象 这里,p只能调用类People

里的方法(若重写则调用对应的子类)
4)  向下转型:将父类类型的引用强制转换为子类类型的对象
如:Man  m =(Man)p;这里m可以调用Man和People中的方法
 
5)  instanceof:检测类型是否正确的关键字
形式:引用 instanceof 类名 如:if(people instanceof Man){
                           Man  a = (Man) people;
}这个例子检测了引用people是否是指向Man类的对象,如果返回为true则将people强制转换为Man类的引用并

赋给a
          
6) 动态绑定:在运行时才得知调用哪个对象的方法,这种方式称为动态绑定(使用重写和向上转型)
7)   总结:使用父类类型的引用指向子类的对象;
该引用只能调用父类中定义的方法和变量;
如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连

接、动态调用);
变量不能被重写(覆盖),“重写”的概念只针对方法,如果在子类中”重写“了父类中的变量,那么在编

译时会报错
 
²  优点:使代码更加灵活,更加易于扩展。
²  详细理解与分析:
父类类型的引用可以调用父类中定义的所有属性和方法,而对于子类中定义而父类中没有的方法,它是无可

奈何的;
同时,父类中的一个方法只有在在父类中定义而在子类中没有重写的情况下,才可以被父类类型的引用调用


对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法,这就

是动态连接。(程序执行时,JVM会沿着继承树层次向下找,若发现子类中重写了父类的该方法,就调用子类

中的被重写的方法,这就是动态绑定)
²  多态的主要应用:
1)多态参数:就是当方法的某个形式参数是一个引用的时候,与该引用兼容(子类)的任何对象都可以传递

给方法,从而允许方法接受不同数据类型的形式参数。
如:
2)异构集合(使用数组):不同对象的集合称为异构集合(多态最常见的应用是创建一个不是同一类型,但

是有共同父类的数据集合)。
如:People [] p = new People[20];这个数组可以存储任何People子类的对象
 
4.      抽象:abstract,我们不能实例化(new)一个抽象类的对象
²  概念:拥有抽象方法的类(类必须声明为抽象类)
²  作用:强制约束子类必须重写父类的抽象方法
²  特点:
1) 抽象类不能通过new关键则来产生对象
2)  抽象类中可以有属性、构造方法和普通方法
3) 当一个类中有一个或多个抽象方法,那么这个类必须是抽象类(抽象类中可以没有抽象方法)
4)  子类继承抽象类后,必须重写所有的抽象方法,否则该类也是一个抽象类
²  抽象方法举例:public abstract  void shout();抽象方法没有方法体,括号后直接写分号

0 0
原创粉丝点击