面向对象的三大特征

封装、继承、多态

一、封装

       简单的说,属性能够描述事物的特征,方法能够描述事物的动作。封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。

       封装是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数据细节,只保留一些接口使其与外界发生联系。也就是说用户无需知道内部的数据和方法的具体实现细节,只需根据留在外部的接口进行操作就行。

如下:

public class Person{

/*

*对属性的封装一个人的姓名、性别、年龄都是这个人的私有属性

*/

private String name;

private String sex;

private int age;

private Wife wife;

/*

* setter()、getter()是该对象对外开发的接口

*/

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

二、      继承

       简单来说继承就是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

      继承关系是传递的。若类C继承类B,类B继承类A(多继承),那么C同时继承下来A和B的属性和方法

class Person{

public String name = "小明";

public int age = 20;

}

class Teacher extends Person {

void study() {

System.out.println("教书");

}

}

public class Show {

public static void main(String args[]) {

Teacher t= new Teacher();

t.name = "小红";

// t.age = 20;

System.out.println("name=" + t.name + "+++++++" + "age=" + t.age);

}

}

三、      多态

    必要条件:方法的重写、重载与动态连接构成多态性;

    向上转型

 我定义了一个子类Cat,它继承了Animal类,那么后者就是前者的父类。我可以通过

Cat c = new Cat();       例化一个Cat的对象,这个不难理解。

但当我这样定义时: Animal a = new Cat();

       它表示我定义了一个Animal类型的引用,指向新建的Cat类型的对象。由于Cat是继承自它的父类Animal,所以Animal类型的引用是可以指向Cat类型的对象的。那么这样做有什么意义呢?因为子类是对父类的一个改进和扩充,所以一般子类在功能上较父类更强大,属性较父类更独特,定义一个父类类型的引用指向一个子类的对象既可以使用子类强大的功能,又可以抽取父类的共性。所以,父类引用只能调用父类中存在的方法和属性,不能调用子类的扩展部分;因为父类引用指向的是堆中子类对象继承的父类;同时,父类中的一个方法只有在父类中定义而在子类中没有重写的情况下,才可以被父类类型的引用调用;对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法,这就是动态连接。

     指向子类的父类引用由于向上转型了,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的,尽管是重载该方法。若子类重写了父类中的某些方法,在调用该些方法的时候,必定是使用子类中定义的这些方法(动态连接、动态调用)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概念继承:子类引用超类,并且以关键字extends来表示 构造器:对象在加载的一瞬间(new)执行的那个程序块,那...
    测试的旅途中阅读 2,695评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,931评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,403评论 19 139
  • 时间得回到上一个月来说,懒惰如我,竟然努力的考研成功,接着谈了场迄今为止最高时长的恋爱。 这俩件事并排发声,也也许...
    不足君阅读 1,800评论 0 0
  • 多么想要的告诉自己的努力,总是不自觉间伤了心。记得看过一句话:北方人爱喝酒,喝酒之后是无尽的牛逼满天飞,南方人爱喝...
    子陌爷爷的小屋阅读 2,256评论 0 1