封装就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用。这其实也就是java面向对象的最大特点,把一个对象的所有属性都封装到一个类里面,继承一体,然后对类和实例化的对象就行处理。
个性对共性的属性与方法的接受,并加入个性特有的属性与方法
继承后子类自动拥有了父类的属性和方法,但特别注意的是,父类的私有属性和构造方法并不能被继承。
另外子类可以写自己特有的属性和方法,目的是实现功能的扩展,子类也可以复写父类的方法即方法的重写。实际就是多态性
将具体的物体的特性抽象出来,这个在接口和抽象类中提现出来,不太熟的可以看看这篇文章,抽象类和接口,接口和抽象类跟类不一样,他们是不能被实例化的,因为在他们的内部,方法都是一个申明,并没有具体的实现,具体的实现需要通过继承或者实现他们的类来做,比如下面这个例子
public interface human { void sayhello(); void introduce(); }
在接口将方法抽象化之后,不同的类就可以同时实现同一个接口了,那就是接下来多态这个特征
多态就是在抽象的层面上实施一个统一的行为,到个体(具体)的层面上时,这个统一的行为会因为个体(具体)的形态特征而实施自己的特征行为。(针对一个抽象的事,对于内部个体又能找到其自身的行为去执行。)
概念:
相同的事物,调用其相同的方法,参数也相同时,但表现的行为却不同。
其实说人话,接上面抽象的特点来说,就是你接口和抽象类把方法抽象了,我其他类实现你这同一个抽象的方法,我可以实现不同的功能,所以抽象跟多态就是,我有抽象这个特点,你才能实现多态。
public class man implements human{ @Override public void sayhello() { System.out.println("hello"); } @Override public void introduce() { System.out.println("my name is lilei,I am a man"); } }
public class woman implements human{ @Override public void sayhello() { System.out.println("hello"); } @Override public void introduce() { System.out.println("my name is wangfang, I am a woman"); } }
就一个类而已,有且仅有一个引起它变化的原因
对扩展开放,对修改关闭(尽可能不动原有代码进行拓展)
子类必须能够替换它们的基类型,基类与子类可互换
这个是开闭原则的基础,具体内容:面向接口编程,依赖于抽象而不依赖于具体。写代码时用到具体类时,不与具体类交互,而与具体类的上层接口交互。
最小依赖原则,一个类对其他类尽可能少的了解。降低耦合
使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。