Java面向对象笔记(封装、继承、多态、抽象类、接口)

面向对象的思想在现实生活中很常见,例如项目开发,老板想要实现某个功能,但是他自己不会这些技术,所以他就会让员工去做这些事情,通过借助别的拥有你想要实现某些功能的过程就可以理解为面向对象。
面向对象有三大特性:封装、继承、多态。
1.封装:即是把函数或者工具类的实现过程隐藏起来,可以通过创建对象或者实现接口来使用已定义好的功能。Java API是一个很好的例子。
2.继承:假设在描述某些事物的时候我们会发现他们具有许多相同的地方,例如鸟类,每种鸟都有眼睛,嘴巴,都会吃东西等,这些相同的地方可以把他们抽取出来定义成一个鸟类,当需要描述多种鸟时就不用再重复定义这些共性,直接继承鸟类即可。
注意:Java的继承不是像C++一样,Java只存在单继承,使用extends ,在调用子类构造方法时会调用父类无参构造方法,若父类没有无参构造,注意为其添加无参构造方法。super()方法可调用父类方法或变量。继承提高了程序的复用性、扩展性,也是 多态特征的前提。
3.多态:即是相同的行为不同的实现,多态的实现必须存在三个条件:继承、重写、父类引用指向子类对象。多态提高了扩展性,可以添加新的实现而不会对已有的实现产生影响。方法的重载与重写就是方法多态性表现;多个子类就是父类中的多种形态,直接上代码

abstract class Annimal
{
	abstract void eat();
	abstract void sleep();
}

class Dog extends Annimal
{
	public void eat()
	{
		System.out.println("狗吃骨头");
	}

	public void sleep()
	{
		System.out.println("狗睡觉");
	}

	public void ability()
	{
		System.out.println("狗看家");
	}
}

class Cat extends Annimal
{
	public void eat()
	{
		System.out.println("猫吃鱼");
	}

	public void sleep()
	{
		System.out.println("猫睡觉");
	}

	public void ability()
	{
		System.out.println("猫抓老鼠");
	}

}

class DuoTai
{
	public static void main(String[] args)
	{
		Annimal a=new Cat();//向上转型(自动)
		a.eat();
		a.sleep();
		if(a instanceof Cat)
		{
			Cat c=(Cat)a;//(强转)向下转型
			c.ability();
		}
		
	}
}

运行结果为:
猫吃鱼 猫睡觉 猫抓老鼠
抽象类:当多个类都存在相同方法名,但是其实现方式却不相同时可以将它们进行抽取,定义成一个类,只有方法名没有具体实现,abstract class 类名{ abstract void…方法名();}
注意:仅实现抽象类的部分功能的类还是抽象类。抽象类除了不能被实例化外和正常类没什么区别。
接口:interface 接口名{方法1;方法2…},默认修饰符为 public ,不能用其他修饰符修饰接口。
接口与抽象类的区别:接口可以被实现多个中间用逗号隔开,使用 implements 关键字实现接口。如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

猜你喜欢

转载自blog.csdn.net/qq_43060759/article/details/83098199