面向对象的三大特征,封装、继承、多态的个人理解以及代码分析

面向过程:我们以前使用的是面向过程编程,你需要清除每个实现步骤,每个步骤每行代码都要仔仔细细的编写,

     不知道过程就找不到结果,找到实现过程就可以得到实现结果。

     例如: 我们在外打工租房子,我们需要了解每个每个房屋的出租信息,不然是找不到房子的。

面向对象:对象帮我们做事情,找到对应的对象我们就可以得到想要的结果。

       例如: 我们找房子不在如此的繁琐,只要找到中介我们就不怕没有地方住,中介会帮你找房子,你只需支付对应的服务费即可。

面向对象的三大特征给我们带了巨大的好处,下面我们就来讲解一下。

    1.什么是封装?
      1.1 封装是面向对象的三大特征之一。
      1.2 它就是把细节信息封装起来,对外提供操作它的对应的方法。
        例如:就像一辆车,你从来不关心它是怎么建造的,你只需要懂怎么操作它就可以了。

    2.怎么实现封装
        2.1 封装的实现方式就是将你需要封装属性提到一个公共的类中,
          将属性私有化,对外提供setter,getter方法,对需要重复使用的实现过程进行抽取为方法。
    3.封装的好处
        3.1 封装使整个软件开发复杂度大大降低。
        3.2 将需要重复使用的实现过程进行封装,提高代码的重用性。
        3.3 你只需找到其对应的方法即可,无需关系它是怎么实现的。
        3.4 私有化数据将数据隐藏,对无需安全考虑的数据通过setter,getter往外提供,对需要考虑安全问题的数据进行私有化。
        3.5 你可以对其参数进行限定,适应你的业务范围。
          例如:就像年龄一样,你声明的参数类型为int,int是可以为负值的,
          但是在我们的现实生活中,
          年龄是没有负值的,这时你可以将年龄对应的setter方法内添加一个
          if-else if-else来限制它的范围

 1 package com.jq;
 2
 3 /**
 4  * 封装
 5  */
 6 public class PackageDemo {
 7     /**
 8      * 将抽象的事物共有的属性进行私有化
 9      */
10     private String name;
11     private int age;
12     /**
13      * 将不需要对外提供的属性进行私有化。
14      */
15     private String phone;
16
17     public String getName() {
18         return name;
19     }
20
21     public void setName(String name) {
22         this.name = name;
23     }
24
25     public int getAge() {
26         return age;
27     }
28     /*
29     可以对传入参数进行限定来适应业务需求
30      */
31     public void setAge(int age) {
32         if(age<0){
33             this.age = 1;
34         }else if(age>1000){
35             this.age=1000;
36         }else{
37             this.age = age;
38         }
39     }
40
41     /*
42      * 无需关注代码细节,只需调用即可
43      */
44     public void eat(){
45         System.out.println("吃东西");
46     }
47     /*
48         提高代码的重用性
49      */
50     public Object add(Double numa,Double numb){
51         return numa+numb;
52     }
53
54     public static void main(String[] args) {
55         //直接调用方法实现功能,降低了代码的复杂度,也无需关系代码的实现过程
56         System.out.println(new PackageDemo().add(1d,2d));
57     }
58 }
1.什么是继承    1.1 继承就是将共有特征或者行为进行向上抽取,将其共有的东西进行实现或者抽象化。        例如:小明跟小丽都有年龄、性别和名字,人类也有这三个特征,             人类的范畴比小明小丽这个特有个体的范围大,所以可以将年龄、             性别和名字这三个特征向上抽取。             小明跟小丽都是人,都有吃东西这个功能,所以可以向上抽取,             但是小明可能是南方人,小丽可能是北方人,一个是吃面食,一个是吃水稻的。             所以可以将这个共有的行为抽象化。让小明小丽这个特有的个体来进行实现。2.怎么样继承    2.1 只需将共有的特征或者行为封装为对象,然后使用extends这个关键字进行继承即可。        如有抽象方法需要对抽象方法进行实现。3.继承的好处    3.1 继承的好处是对共有的属性或者行为进行向上提取,降低了代码的复杂度。    3.2 继承为实现多态提供了前提,没有继承就没有多态。4.注意事项    4.1 继承时子类共有方法会覆盖父类的共有方法。        例如:子类父类都有吃东西的方法,子类是吃饭,而父类是吃东西,        在使用多态类创建对象( Fu fu = new Zi() )时,调用eat方法是时,会是吃东西而不是吃饭。    4.2 继承时子类属性不会覆盖父类的属性。
package com.jq;

/**
 * 继承
 */
abstract class  human {
    //抽取共有特征
    String name;
    int age;
    //抽取共有方法,特有行为让其子类实现
    public abstract void eat();

    @Override
    public String toString() {
        return "human{" +
                "name=‘" + name + ‘\‘‘ +
                ", age=" + age +
                ‘}‘;
    }
}
class XiaoMing  extends human{
    public XiaoMing() {
        super.name="小明";
        super.age=25;
    }

    public void eat() {
        System.out.println("吃面");
    }
}
class XiaoLi  extends human{
    public XiaoLi() {
        super.name="小丽";
        super.age=18;
    }

    public void eat() {
        System.out.println("吃面");
    }
}
public class ExtendsDemo {
    public static void main(String[] args) {
        System.out.println(new XiaoMing());
        System.out.println(new XiaoLi());
    }

}
1.什么是多态    1.1 多态就是同一个事物但是他具有多种形态。        例如: 一只二哈,二哈是一只狗,二哈是犬科动物,二哈是一直动物,这就是多态。2.怎么实现多态    2.1 只需具有继承关系,然后进行类型转换即可。3.多态的好处    3.1 多态切换多种形态来使用特有的方法。4.多态的弊端    4.1 只能使用本形态下的属性和方法。    4.2 如果在使用数组或者没有使用泛型的集合内的对象时,需要用到子类特有的方法,必须用instanceof这个关键字来进行类型判断,        否则有可能会出现ClassCastException这个异常。
package com.jq;

/**
 * 多态
 */
class Dog {
    String name="二哈";
    public void call(){
        System.out.println("汪汪汪汪");
    }

}
class erha extends Dog {
    public void eat(){
        System.out.println("吃的一手好狗粮");
    }
}
class xiaomao {
    public void call(){
        System.out.println("喵喵喵");
    }

}
public class PolymorphicDemo {
    public static void main(String[] args) {
        Object[] animal = {new erha(),new xiaomao()};
        for (Object o : animal) {
            /*Dog dog =(Dog)o;
            dog.call();
            以上代码会抛异常 java.lang.ClassCastException: com.jq.xiaomao cannot be cast to com.jq.Dog
            */
            if(o instanceof Dog){
                Dog dog =(Dog)o;
                dog.call();
            }else if(o instanceof  xiaomao){
                xiaomao cat =(xiaomao)o;
                cat.call();
            }
        }
    }

}

    

原文地址:https://www.cnblogs.com/GGYC/p/10947052.html

时间: 2024-10-22 05:52:56

面向对象的三大特征,封装、继承、多态的个人理解以及代码分析的相关文章

类与对象 面向对象和面向过程对比 面向对象三大特征:封装 继承 多态

 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门 面向对象:大象, 你进冰箱. 此时主语是大象. 我操纵的是大象. 此时的大象就是对象 1. 面向过程: 一切以事物的流程为核心. 核心是"过程"二字, 过程是指解决问题的步骤, 即, 先?干什么, 后干什么. 基于该思想编写程序就好比在编写一套流水线. 是一种机械 式的编程

面向对象的三大特性---封装继承多态

面向对象的三大特性---封装继承多态 首先我们来创建一个控制台程序 新建一个父类Person 创建一个子类继承父类Person 子类: main函数: 输出结果: 根据结果显示创建子对象,首先调用父类的构造函数在调用子类的构造函数. 继承的传递性 例如: A:B,B:C,则A:C ⅰ.继承过来之后被隐藏,有意隐藏加一个关键字"new",如果加了关键字"new",就告诉子类,父类里面的sayHi只能被隐藏,不能被覆写  ⅱ.继承过来之后被覆写/重写,覆写需要在父类里面

JAVA的三大特征 封装继承多态- 简单总结

简单总结一下 封装-即从很多类的抽取相同的代码 写在一个类里. 好处是 代码的重用,安全. 继承-减少代码的书写. 其好处也是 代码的重用. 多态- 把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化. 总的来说还是接口的重用. 那么总结一下,JAVA的三大特征 其好处 就是代码与接口的重用. 封装可以隐藏实现细节,使得代码模块化: 继承可以扩展已存在的代码模块(类): 它们的目的都是为了——代码重用. 而多态则是为了实现另一个目

面向对象的四大特征 封装 继承 多态 抽象

1.封装 广义: 类 方法 包 的定义本身就是一种封装 狭义: 在设计一个类的时候 将所有的属性设置为私有的 并对各个私有的属性设计相应的 存/取方法 来完成对属性的使用 私有化只能代表封装的特性 可以说私有是封装的一种 不能说封装即是私有 封装的好处: 隐藏实现细节 提供公共的访问方式 提高了安全性 封装的原则: 将不需要对外提供的内容都封装起来 把属性隐藏 提供公共的方法进行访问 private关键字***** 关键字的特点: 1.私有的意思 2.是一个权限修饰符 3.可以修饰成员变量 和

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

Java面向对象编程三大特征 - 封装

Java面向对象编程三大特征 - 封装 本文关键字:Java.面向对象.三大特征.封装封装是面向对象编程中的三大特征之一,在对封装性进行解释时我们有必要先了解一些面向对象的思想,以及相关的概念.当我们想要去描述一系列的关系时我们要用到的最基本结构就是类,其中存在着成员变量和方法,用于记录属性和表达行为,相关知识请进传送门:Java中的基本操作单元 - 类和对象. 一.名词解读 为了解释封装的概念和作用,需要先来了解一下几个相关的概念,这有助于我们接下来的理解. 1. 权限修饰符 当我们在一个类中

面向对象的三大特征——封装、继承、多态

接触过面向对象的人都知道面向对象有三大特征,分别是封装.继承和多态.这三者分别指的是什么,为什么是这哥仨,使用他们有什么好处,我们来梳理一下. 封装 原则:隐藏对象的属性和实现细节,仅对外提供公共访问方式. 好处: ①将变化隔离. ②便于使用. ③提高重用性. ④提高安全性. Demo1: 比如一个学生类:他具有姓名和年龄两个属性,但是为了提高安全性和重用性,便于使用,我们将其封装起来. public class Student { private String name; private in

面向对象三大特性(封装/继承/多态)

引入:在面向对象思想中,有三大特性,封装  继承  多态. 思考:我们在使用类和对象实现编程的时候,到底是遵循这什么样的逻辑呢?为什么要这样规范类呢? 引入:面向对象很重要的思想就是隐藏,即外部不知道类内部是如何实现业务逻辑的,只管调用和使用结果,这个就是面向对象三大特性之一:  封装 1.封装[掌握] 定义:封装,字面意思就是将内容装到某个容器中,并进行密封保存,在面向对象思想中,封装指数据和对数据的操作捆绑到一起,形成 对外界的隐藏,同时对外提供可以操作的接口. 1.数据:即要操作的数据,在

OOP三大核心封装继承多态

OOP支柱 3 个核心:封装 继承 多态 封装就是将实现细节隐藏起来,也起到了数据保护的作用. 继承就是基于已有类来创建新类可以继承基类的核心功能. 在继承中 另外一种代码重用是:包含/委托,这种重用不是父子类的继承关系,而是一个类定义为另一个类的成员变量. 一个简单的例子,汽车和收音机,汽车里面有一个收音机,不能说继承,不符合逻辑,只能说是一种对象包含了另一个对象.汽车对象中调用了收音机对象中的方法. 多态就是同一请求,不同的响应操作. 多态 同一种方式处理相关对象的能力. 相同的请求操作不同