26-JAVA面向对象-抽象形式

抽象类    从多个类中抽象出一组固定的行为.修饰符为abstract 不能被创建对象.只能被作为父类来继承
               抽象方法必需在抽象类中

         抽象方法必需在子类中实现(覆盖)

抽象类与接口的异同
1.abstract(抽象)类 表示是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。 
2.在abstract类中可以有自己的成员变量,也可以有普通成员方法,而在interface中,只能够有静态的不能被修改的成员变量(也就是必须是 static final的,必须给其初值,不过在 interface中一般不定义成员变量),只有抽象方法存在。
3.abstract类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
4.实现abstract类和interface的类必须实现其中的所有方法。
5.abstract类和interface最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,并且这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到这个新方法,而interface做不到,如果向一个Java接口里加一个新抽象方法,那么所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。

抽象类:
 1:使用abstract修饰一个类 这个类就是抽象类
 2:抽象类中可以有抽象方法,也可以没有
 3:如果一个类中包含抽象方法,这个类必须 修饰为抽象类  
 4:如果一个子类继承了一个包含抽象方法的的抽象类
       4.1 要不就将自己使用abstract 修饰为抽象类
       4.2 要不就实现(重写)继承下来的抽象方法
5:抽象类不能创建实例  不能使用 new 

abstract class Animal{
	/**
	 * 可以定义变量和常量
	 * 声明一个抽象方法,方法的具体定义交给子类去重写
	 * 使用abstract修饰的方法是抽象方法
	 * 如果一个类中包含有抽象方法,那么这个类就一定要是抽象类
	 * */
	public abstract void sayHello();
	//也可以定义普通的方法
	public void show(){
		System.out.println("-----show()-----");
	}
}

class Dog extends Animal{

	@Override
	public void sayHello() {
		System.out.println("--Dog---终于可以正常说话了---");
	}
	
	//也可以重写父抽象类的普通方法
	public void show(){
		System.out.println("--Dog---show()------");
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值