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; } }
组合和聚合的区别: