OOP的三大特性是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OOP的三大特性是啥相关的知识,希望对你有一定的参考价值。

参考技术A

1、封装性:在面向对象技术的相关原理以及程序语言中,封装的最基本单位是对象,而使得软件结构的相关部件的实现“高内聚、低耦合”的“最佳状态”便是面向对象技术的封装性所需要实现的最基本的目标。

2、继承性:继承性是面向对象技术中的另外一个重要特点,其主要指的是两种或者两种以上的类之间的联系与区别。继承是后者延续前者的某些方面的特点,而在面向对象技术则是指一个对象针对于另一个对象的某些独有的特点、能力进行复制或者延续。

3、多态性:从宏观的角度来讲,多态性是指在面向对象技术中,当不同的多个对象同时接收到同一个完全相同的消息之后,所表现出来的动作是各不相同的;从微观的角度来讲,多态性是指在一组对象的一个类中,面向对象技术可以使用相同的调用方式来对相同的函数名进行调用。

扩展资料

OOP的主要特点:

1、对象唯一性。每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。

2、抽象性。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。

3、多形性。多形性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多形性。

参考资料来源:百度百科-OOP

java第五章:面向对象(oop)三大特性之多态

多态(把代码写活,提高代码的扩展性和可维护性)

生活中的多态:同一种物质,因不同的环境展现不同的形态(水:气态,液态,固态/碳12:金刚石,石墨)

程序中的多态:同一个“接口”因不同的实现,而执行不同的操作(就是在方法中把父类作为形式参数传入,调用的时候,传入子类的实例,最终执行的是子类中重写父类的方法)

 

多态一般结合方法重写、继承使用,父类引用指向子类;

多态实现步骤:

1.实现继承

2.编译时将父类作为形式参数类型传入(范围大一点,模糊一点)

3.运行时将子类new出的实例传入,最终执行的是子类中重写父类的方法。

 

类型的转换

1.子类转换为父类,称为自动转换,也叫向上转型

eg: Animal animal = new Dog();

注意:向上转型完之后,animal只能访问父类中的属性和方法,子类中自有的属性和方法无法访问,调用的是子类中重写父类后的方法;

2.父类转换为子类,称为强制转换,也叫向下转型

eg: Animal animal  = new Dog();

  Dog dog = (Dog)animal;        此时dog只能调用子类中的属性和方法,无法访问父类中的属性和方法。

 

final关键字,最终的意思

1.修饰变量,该变量就成了常量,不能重新被赋值

2.修饰方法,该方法不能被重写(在子类中)

3.修饰类,该类不能被继承(eg:java.lang包中的Math类和String类)

 

abstract关键字,抽象的意思

抽象方法:使用abstact修饰的方法,最显著的特点是没有方法体,就是提供给子类重写用的一种规范。

抽象类:使用abstract修饰的类,抽象类中可有可无抽象方法,可以有属性和构造方法。但是不能被实例化(不能new),天生为继承而生Animal animal = new Dog();

有抽象方法的类,一定是抽象类,必须是抽象类,要不然会报错。

抽象类的作用:防止编写程序的随意性,提供一种规范;

 

java中的设计模式(GOF),23种,是前人对经典问题总结出来的解决方案

单例模式:一个类只能创建一个实例对象,实现方法:构造方法私有化,提供一个共有的静态方法获取实例。

实现方式:1.饿汉式   2.懒汉式

 

 

简单工厂模式(静态工厂方法):可以生产产品,可以降低因生产产品而导致的耦合性过强(解耦合);

实现方式:1.编写父类和子类或接口和实现类

     2.编写静态工厂方法,返回值类型是父类或接口——>多态;

     3.根据用户的需求,动态创建子类对象,并返回

package cn.zzsxt.demo7.factory;
//创建父类
public abstract class AXE {
    public abstract void cut();
}

package cn.zzsxt.demo7.factory;
//创建石斧子类
public class StoneAxe extends AXE {

    @Override
    public void cut() {
        System.out.println("我是石斧,砍日本人钝!");
    }

}

package cn.zzsxt.demo7.factory.copy;
//创建铁斧子类
public class SteelAxe extends AXE{
    @Override
    public void cut(){
        System.out.println("我是铁斧,砍日本人锋利!");
    }
}

package cn.zzsxt.demo7.factory;
//创建静态工厂方法
public class AXEFactory {
    public static AXE getInstance(String str){
        AXE axe = null;
        if(str.equals("stone")){
            axe = new StoneAxe();
        }else if(str.equals("steel")){
            axe = new SteelAxe();
        }
        return axe;
    }
    
    public static void main(String[] args){
        AXE axe = AXEFactory.getInstance("stone");
        axe.cut();
        System.out.println("=========================");
        AXE axe2 = AXEFactory.getInstance("steel");
        axe2.cut();
    }
}

 

    

以上是关于OOP的三大特性是啥的主要内容,如果未能解决你的问题,请参考以下文章

oop的三大特性和传统dom如何渲染

OOP的三大特性------封装继承多态

java第五章:面向对象(oop)之三大特性

java第五章:面向对象(oop)三大特性之多态

js面向对象的三大特性

OOP三大特性之封装:写出高内聚的clean code