1封装:封装的是属性,封:private  装:set、get‘

    可以看做将属性和get/set方法捆绑的过程。

    优点:1、防止对封装数据的未经授权的访问,提高安全性。使用者只能通过事先预定好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作。

       2、有利于保证数据的完整性

       3、便于修改,增加代码的可维护性。

       4、隐藏一个类的实现细节。

2、强内聚弱耦合:一个类通常就是一个小的模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其他一切内容。我们在进行程序的详细设计时,尽量避免一个模块直接修改或操作另一个模块的数据。

  强内聚:让一个类功能尽量强大

  弱耦合:如果多个类通信,尽量单线联系。

3、继承

   子承父(非私有)属性、方法,不继承构造器,实现对类的复用;

    所有的类的最根源的父类是Object。

   Object类下的通用方法(所有类都有这些方法):Clone克隆:创建一个和自己一样的对象,但是堆不同

              toString:变成字符串

              finalize:垃圾回收使用,他是最后一道防线轮询堆地址是否有栈在调用。      

              wait:让当前线程等候

              notify:唤醒被等待的线程

              getClass:得到当前对象的运行时类

              hashCode:这是当前对象的hash码。让当前对象唯一,便于查找。

              notifyAll:唤醒全部线程。

              equals:判断堆的值是否相等。

java中继承为单继承。

    

4、组合和聚合(为了不使用继承,组合聚合复合原则)

组合(composite) :如果想复用一个类,除了继承以外,还可以把该类当做另一个类的组成部分,从而允许新类直接复用该类的public方法,不管是继承还是组合,都允许在新类中直接复用旧类的方法

    组合是直接把旧类对象作为新类的属性嵌入,用以实现新类的功能,通常需要在新类里使用private修饰符嵌入该类对象。

在构造器中实现对该对象成员变量的实例化。

package com.zxc.G;

/**
* Created by Administrator on 2018/2/1 0001.
*/
public class Person {//composite
private Hand lhand;
private Hand rhand;
Person(){
lhand=new Hand("左手");
rhand=new Hand("右手");
} public static void main(String[] args) {
System.out.println(new Person().lhand.getName());
System.out.println(new Person().rhand.getName());
}
}
class Hand{
private String name;
Hand(String name){
this.name=name;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}

 

聚合(aggregation):在set中实现对该对象成员变量的实例化

package com.zxc.G;

/**
* Created by Administrator on 2018/2/1 0001.
*/
public class Human {
private Cat cat; public Cat getCat() {
return cat;
} public void setCat(Cat cat) {
this.cat = cat;
} public static void main(String[] args) {
Human h=new Human();
Cat c=new Cat();
c.setColor("花猫");
h.setCat(c);
System.out.println(h.getCat().getColor()); }
}
class Cat{
private String color; public String getColor() {
return color;
} public void setColor(String color) {
this.color = color;
}
}

组合和聚合的区别:

   

7、java封装、继承、聚合组合的更多相关文章

  1. 新秀翻译(一个)——Java在继承和组合

    阅读英文的程序猿的能力,这是非常重要的.过去的几年中一直在学习英语,今天心血来潮,在网上找什么鲍文简要翻译. 普通级,能力有限,看官还请大家多多指点. 译文: 本文将会举例说明Java中继承和组合的概 ...

  2. java 中继承,组合,重载,重写的实现原理 (转)

    我们知道,继承,组合,重载,重写是java语言的面向对象实现的基本特征. 那么在java内部,究竟是如何实现这些面对对象的基本特征的呢? 继承和组合是面向对象中代码复用的主要实现方式,他们可以达到类似 ...

  3. java中继承和组合的区别

    子类继承父类,父类的所有属性和方法都可以被子类访问和调用.组合是指将已存在的类型作为一个新建类的成员变量类型,又叫"对象持有". 通过组合和继承,都可以实现系统功能的重用和代码的复 ...

  4. Java 封装 继承 多态

    Java 继承 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法 ...

  5. java的继承和组合

    继承和组合是java中非常常用的两种创建新类型的方法,两者都能提高代码的复用率. 继承主要是想让子类继承父类的基本特性:组合技术通常用于想在新类中使用现有类的功能,而非它的接口.两者的分别是" ...

  6. java封装继承以及多态(含代码)

    封装 该露的露,该藏的藏 我们常需设计要追求,"高内聚,低耦合".高内聚就是类的内部数据操作细节自己完成.不允许外部干涉:低耦合:仅暴漏少量的方法给外部使用. 封装(数据的隐藏) ...

  7. Java中的继承与组合(转载)

    本文主要说明Java中继承与组合的概念,以及它们之间的联系与区别.首先文章会给出一小段代码示例,用于展示到底什么是继承.然后演示如何通过“组合”来改进这种继承的设计机制.最后总结这两者的应用场景,即到 ...

  8. Java中的继承与组合

    本文主要说明Java中继承与组合的概念,以及它们之间的联系与区别.首先文章会给出一小段代码示例,用于展示到底什么是继承.然后演示如何通过“组合”来改进这种继承的设计机制.最后总结这两者的应用场景,即到 ...

  9. [译]Java中的继承 VS 组合

    (文章翻译自Inheritance vs. Composition in Java) 这篇文章阐述了Java中继承和组合的概念.它首先给出了一个继承的例子然后指出怎么通过组合来提高继承的设计.最后总结 ...

  10. 菜鸟译文(一)——Java中的继承和组合

    阅读英文的能力对于程序员来说,是很重要的.这几年也一直在学习英文,今天心血来潮,就在网上找了一篇简短的博文翻译一下.水平一般,能力有限,还请各位看官多多指点. 译文: 本文将会举例说明Java中继承和 ...

随机推荐

  1. 在join中,on和where的区别

    两个表在,join时,首先做一个笛卡尔积,on后面的条件是对这个笛卡尔积做一个过滤形成一张临时表,如果没有where就直接返回结果,如果有where就对上一步的临时表再进行过滤. 在使用left  j ...

  2. 《Objective-C高级编程:iOS与OS X多线程和内存管理》读后感

    拿到这本书的第一感觉是非常薄,可是内容就如同序里面所说,这不是一本面向刚開始学习的人的书,比較有深度,对C/C++全然不熟悉的话非常多东西会看不明确. 尽管此书在技术点上仅仅谈到了ARC.Blocks ...

  3. java之IO处理

    File文件基础 文件与文件夹抽象路径名称的表示.其构造方法有四个 File(File parent,String child):从抽象父文件夹下创建一个File实例. File(String par ...

  4. MongoDB数据操作之删除与游标处理

    删除数据(比较常用) 范例:清空infos集合中的内容.表.文档.成员. db.infos.remove({"url":/-/}); 默认情况下都删除,第二个条件设为true,只删 ...

  5. linux 挂载存储步骤(以emc 5300为例)

    挂载存储有两种方式:光纤模式(hub卡)和iscsi (以太网).两者大体思路是一样的. 1.在应用服务器上安装hub卡,连接光纤到光纤交换机上: 2.在应用服务器安装hub卡驱动程序: 3.在存储上 ...

  6. github上下载开源项目

    1.首先获取到设置信息 2.找到克隆的路径(本步骤不包含下载.zip的方法) 3.打开 Git Shell ->输入: cd ../../ ->输入: cd  想要安装的路径 ->输 ...

  7. HDU 3342 Legal or Not【拓扑排序】

    题意:给出n,m,人的编号为 0到n-1,再给出m个关系,问能不能够进行拓扑排序 #include<iostream> #include<cstdio> #include< ...

  8. .startsWith和endsWith的使用方法与说明

    a.startsWith(b) --判断字符串a,是不是以字符串b开头 a.endsWith(b) --判断字符串a,是不是以字符串b结尾

  9. Java中hashCode与equal方法详解

    转载自http://blog.csdn.net/jiangwei0910410003/article/details/22739953 Java中的equals方法和hashCode方法是Object ...

  10. 51nod 1526 分配笔名(Trie树+贪心)

    建出Trie树然后求出一个点子树中有多少笔名和真名.然后贪心匹配即可. #include<iostream> #include<cstring> #include<cst ...