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;
}
}

组合和聚合的区别:

   

最新文章

  1. 常用ASCII CHR碼對照
  2. [mysql] 查看mysql执行时间
  3. SharePoint 2010 人员选择器搜索范围的限定
  4. 作用域闭包、预解释和this关键字综合题目
  5. SQL 32位还原位64位出现3154错误
  6. 【设计模式 - 9】之装饰者模式(Decorator)
  7. C# DataTable 详解
  8. AngularJS学习笔记2
  9. 为什么要学ADO.NET。。。什么是ADO.NET。。。
  10. python学习day3------列表、元组、字符串操作
  11. [Deep Learning] 神经网络基础
  12. go 定时器
  13. Java 设计模式学习笔记1——策略模式(Duck例子)
  14. Java编程思想 学习笔记10
  15. 12章 搜索框架ElasticSearch介绍和整合SpringBoot 4节课
  16. Python全栈-magedu-2018-笔记11
  17. echarts报错Can't get dom width or height
  18. nowcoder 合并回文子串
  19. TCHAR用法
  20. C# 一个方法如何返回多个值

热门文章

  1. Cocos2d-x 3.4 之 消灭星星 > 第三篇(终) <
  2. 【动态树问题】LCT学习笔记
  3. Oracle_角色_权限具体说明
  4. 2)Win10-UWA开发 API參考 - 1
  5. "浪潮杯"第六届ACM山东省省赛山科场总结
  6. etxjs
  7. C++之指针与引用,函数和数组
  8. ikbc 时光机 F87 Ctrl 失灵 解决办法
  9. MVC 设计模式
  10. H5页面在线制作工具搜集