Java三大特征

Java三大特征Java面向对象的三大特征:封装、继承、多态封装和继承几乎都是为多态而准备的一、     封装首先,属性能够描述事物的特征,方法能够描述事物的动作。封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。封装:封装也称信息隐藏,是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数

大家好,又见面了,我是你们的朋友全栈君。

Java面向对象的三大特征:

封装、继承、多态

封装和继承几乎都是为多态而准备的

一、      封装

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

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

1)        实现了专业的分工

2)        良好的封装能够减少耦合

3)        类内部的结构能够自有修改

4)        可以对成员进行更精确的控制

5)        隐藏信息,实现细节

  1. 封装的步骤

1)        修改属性的可见性来限制对属性的访问

2)        为每个属性创建一队赋值和取值方法,用于对这些属性的访问

3)        在赋值和取值方法中,加入对属性的存取限制

 

为了实现良好的封装,我们通常将类的成员变量声明为private,在通过public方法来对这个变量来访问。对一个变量的操作,一般有读取和赋值2个操作,,我们分别定义2个方法来实现这2个操作,一个是getXX(XX表示要访问的成员变量的名字)用来读取这个成员变量,另一个是setXX()用来对这个变量赋值。

 

下面我们来看下这个例子:

    public class Husband {

 

    /*

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

     */

    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;

    }

 

    public void setWife(Wife wife) {

        this.wife = wife;

    }

}

二、      继承

  1. 1.         Java继承

Java继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,父类是子类的一般化,子类是父类的特化(具体化)

继承所表达的就是一种对象类之间的相交关系,它使得某类对象可以继承另外一类对象的数据成员和成员方法。若类B继承类A,则属于B的对象便具有类A的全部或部分性质(数据属性)和功能(操作),我们称被继承的类A为基类、父类或超类,而称继承类B为A的派生类或子类。

继承避免了对一般类和特殊类之间共同特征进行的重复描述。同时,通过继承可以清晰地表达每一项共同特征所适应的概念范围——在一般类中定义的属性和操作适应于这个类本身以及它以下的每一层特殊类的全部对象。运用继承原则使得系统模型比较简练也比较清晰。

  1. 2.         Java继承的特征

1)        继承关系是传递的。若类C继承类B,类B继承类A(多继承),则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法。继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法。

2)        继承提供了软件复用功能。若类B继承类A,那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。

3)     继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。

  1. 3.         继承的实例

class Person1 {

       public String name = “xiaomiao”;

       public int age = 20;

}

 

class Student extends Person1 {

       void study() {

              System.out.println(“I can study!”);

       }

}

 

public class JiCheng {

       public static void main(String args[]) {

              Student stu = new Student();

              // stu.name = “zhangsan”;

              // stu.age = 20;

              System.out.println(“name=” + stu.name + “,,,” + “age=” + stu.age);

       }

}

三、      多态

  方法的重写、重载与动态连接构成多态性; 

  Java之所以引入多态的概念,原因之一是它在类的继承问题上和C++不同,后者允许多继承,这确实给其带来的非常强大的功能,但是复杂的继承关系也给C++开发者带来了更大的麻烦,为了规避风险,Java只允许单继承,派生类与基类间有IS-A的关系(即“猫”is a “动物”)。这样做虽然保证了继承关系的简单明了,但是势必在功能上有很大的限制,所以,Java引入了多态性的概念以弥补这点的不足,此外,抽象类和接口也是解决单继承规定限制的重要手段。同时,多态也是面向对象编程的精髓所在。 

  要理解多态性,首先要知道什么是“向上转型”。 

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

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

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

  这代表什么意思呢?

  很简单,它表示我定义了一个Animal类型的引用,指向新建的Cat类型的对象。由于Cat是继承自它的父类Animal,所以Animal类型的引用是可以指向Cat类型的对象的。那么这样做有什么意义呢?因为子类是对父类的一个改进和扩充,所以一般子类在功能上较父类更强大,属性较父类更独特,定义一个父类类型的引用指向一个子类的对象既可以使用子类强大的功能,又可以抽取父类的共性。所以, 

  父类引用只能调用父类中存在的方法和属性,不能调用子类的扩展部分;因为父类引用指向的是堆中子类对象继承的父类;(但是如果强制把超类转换成子类的话,就可以调用子类中新添加而超类没有的方法了。) 

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/156311.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 后台一行输入太多内容,使前台显示自动换行方法

    后台一行输入太多内容,使前台显示自动换行方法

  • 音悦台高清mv下载_音悦台没有了去哪看mv

    音悦台高清mv下载_音悦台没有了去哪看mv需要获取的页面:参考了此处,做了修改,代码如下:1#coding:utf-82importurllib23importurllib4importre5importsys6

  • hbase 面试问题汇总

    hbase 面试问题汇总

    2021年11月27日
  • CPU型号后缀含义

    CPU型号后缀含义CPU后缀是制Y:超低电压移动版2113(平板电脑、混合本)的5261CPU;CPU后缀4102是U:低电压版移动处理1653器。intelCPU后缀的意思如下:“K”代表该处理器是不锁倍频桌面级CPU;“S”代表该处理器是功耗降至65W的低功耗版桌面级CPU;“T”代表该处理器是功耗降至45W的节能版桌面级CPU;“M”代表该处理器是功耗低于35W的双核移动CPU;“QM”代表该处理器是功耗为45W的四核移动CPU;“XM”代表该处理器是至尊版移动处理器;“U”代表该处理器是低电压版

  • 《深入浅出WPF》——模板学习

    《深入浅出WPF》——模板学习一、前言    图形用户界面(GUI,GraphicUserInterface)应用较之控制台界面(CUI,CommandUserInterface)应用程序最大的好处就是界面友好、数据显示直观。CUI程序中数据只能以文本的形式线性显示,GUI程序则允许数据以文本、列表、图形等多种形式立体显示。  用户体验在GUI程序设计中起着举足轻重的作用——用户界面设计成什么样子看上去才够漂亮?控件如何安排才简单易用并且少犯错误?(控件并不是越复杂

  • 13项美德—富兰克林

    13项美德—富兰克林

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号