【Java】面向对象核心

   之前也写过面向对象的文章,比如《面向对象基础》《重写与重载》《面向对象技术》等等。。但是当时是对面向对象的第一次亲密接触,对它还没有向现在这么熟悉,所以,只是囫囵吞枣的看了《大话设计模式》那本书,然后在CSDN上查了查资料就写下了上面的文章。那些文章是知识的罗列、积累和归纳。并不是我自己的思考。

   那么这篇文章就不一样了,因为她确实是属于我的东西,现在分享给大家。。

【Java】面向对象核心_第1张图片

   上面这张图充分展现出了面向对象的核心思想:抽象、封装、继承和多态。

   抽象

   抽象是面向对象的基础,也是封装、继承和多态的前提。把具有相同特性的一类东西,集中到一起的过程就是抽象。就好比小狗、小猫和小耗子,虽然它们是不同的物种,但是它们都属于动物,所以,咱们可以统一叫它们动物。

   封装

   封装就是将抽象出来的东西,统一集中到一个类中。这样一来,这个类中的所有对象都具有相同的属性和方法。将小狗、小猫和小耗子封装成动物类,这个动物有一个方法——叫。

   重载

   重载可以赋予新的功能。最常用的是重载构造函数。之前这个动物没有名字,那么咱们就可以利用重载构造函数的方法,为这个动物加一个形参name。这样一来,当小狗、小猫和小耗子继承动物类的时候,就会赋予它们一个名字。

   继承

   继承就相当于儿子继承父亲的基因和财产。但是有些东西是不能被继承的,是有权限设定的。比如父亲的儿子就不能被继承,因为这样一来自己就是自身的儿子了,这就乱套了。。

   继承的好处是代码复用。动物可以叫,相应的,小狗也会叫。。

   重写

   重写就是子类根据自己的特性,重新定义从父类那里继承的方法。小狗、小猫和小耗子继承了动物“叫”的方法后,它们就都会叫了。但是它们有各自的特点,狗叫是“汪汪”、猫叫是“喵喵”、耗子叫是“吱吱”。所以,通过重写就可以得到各自独特的叫声。

   多态

   多态就是根据不同的需求,动态的满足你的需求。如果你想听狗叫声,那么这个动物就会变成一条狗,然后“汪汪”;如果想听猫叫声,动物就会变成一只猫,然后“喵喵”。。

   如果要想达到多态的效果,要满足三个必要条件:继承、重写、父类对象引用子类对象。

   下面是一个多态的实例:

abstract class Animal{
	private String name;

	public Animal(String name){
		this.name=name;
	}

	public abstract void enjoy();
}

class Cat extends Animal{
	private String eyesColor;

	Cat(String n,String c){
		super(n);
		this.eyesColor=c;
	}

	public void enjoy(){
		System.out.println("猫叫声。。。");
	}
}

class Dog extends Animal{
	private String furColor;

	Dog(String n,String c){
		super(n);
		this.furColor=c;
	}

	public void enjoy(){
		System.out.println("狗叫声。。。");
	}
}

class Lady{
	private String name;
	private Animal pet;

	Lady(String name,Animal pet){
		this.name=name;
		this.pet=pet;
	}

	public void myPetEnjoy(){
		pet.enjoy();
	}
}

public class TestDuotai{
	public static void main(String[] args){
		Cat c=new Cat("catname","blue");
		Dog d=new Dog("dogname","black");

		Lady l1=new Lady("l1",c);
		Lady l2=new Lady("l2",d);

		l1.myPetEnjoy();
		l2.myPetEnjoy();
	}
}

   总结

   之前学过的知识需要不断的总结和思考,才能成为自己的东西。

你可能感兴趣的:(java,面向对象)