面向对象的特征是啥?

封装

说面向对象的特征是封装,c语言是非面向对象语言,难道没有封装吗?只要是高级语言都有封装。因为面向过程把通过函数的封装,转化为了面向对象通过类来封装。 类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

继承

继承确实是面向对象中特有的。继承是指这样一种能力:它可以使用现有类的所有功能。
这里的继承,是广义上的继承,可以用两种方式来实现:
  1. Inheritance(继承)
  • 子类:继承创建的新类
  • 基类:被继承的类
面向对象的特征是啥?
继承

  1. Composition(组合)
把已有的功能赋能到新的类中.
面向对象的特征是啥?
组合

这两种方式什么时候用呢?我们之后再开帖子讲.以及《thinking in java》中为什么说多用组合,少用继承。
OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。
它的好处是什么呢?
  • 提高了代码的复用性。
  • 让类与类之间产生了关系。
    编程有时候像搭积木,不要用重复的积木,怎么样组织代码。

多态

在同一个方法中,由于参数不同而导致执行效果各异的现象就是多态。
  1. Java实现多态有三个必要条件:继承、重写、向上转型
  • 继承:在多态中必须存在有继承关系的子类和父类。
  • 重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
  • 向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。

override(重写)

方法名、参数、返回值相同。发生在不同的类之间。
尤其java中实际上有相应的关键字 @override 标记重写.
public class Human {
    public void write() throws Exception {
        //写字.
    }
}

public class Programmer extend Human {
    @override
    public void write() throws Exception {
        //程序员写不仅仅写字,还会写代码.
    }
}

overload(重载)

参数类型、个数、顺序至少有一个不相同。
public class Programmer {
    public void coding() throws Exception {

    }

    public void coding( String langType ) {

    }

    public String coding( String langType, String project ) {
        return “”;
    }
}
这里的知识大家都懂。我说一个大家不懂的好了。
public class Programmer {
    public void coding(List<String> langType) {
        ;
    }

    public void coding(List<Integer> langType) {
        ;
    }
}
你觉得上面这段代码可以编译过吗?答案是并不能,因为java中存在类型擦除。实际上List<String>List<Integer>是同一种类型List<T>
遇到这种情况我们一般在实现的时候怎么实现呢?很简单粗暴.
public class Programmer {
    public void codingString(List<String> langType) {
        ;
    }

    public void codingIntegers(List<Integer> langType) {
        ;
    }
}
本站所有文章均来自互联网,如有侵权,请联系站长删除。极客文库 » 面向对象的特征是啥?
分享到:
赞(0)

评论抢沙发

评论前必须登录!