</pre><pre code_snippet_id="350561" snippet_file_name="blog_20140517_1_9708957" name="code" class="java">
----------------- android培训、java培训、期待与您交流!-----------------
package com.zhy;
/**
* 抽象类-----通过abstract关键字来修饰的类称为抽象类类
* 当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的行为方式,
* 那么这些方法都有具体的方法体。
* 但是有的时候,某个父类只是知道子类应该包含怎么样的方法,
* 但是无法准确知道子类如何实现这些方法。
*
* 特点:
* 1 抽象方法一定在抽象类中
* 2 抽象方法和抽象类都必须被abstract关键字修饰
* 3 抽象类不能被new创建对象,因为调用抽象方法没意义
* 4 抽象类中的方法要被使用,就必须让子类重写所有对抽象方法,建立子类对象去调用
* 注: 如果子类只重写部分抽象方法,那么子类还是一个抽象类
* 5 可以强制子类做一些事情
* 总结-------
* 抽象类用private修饰,里面可以有用private修饰的方法(没有方法体),强制子类进行覆写;
可以理解为:具有某些公共方法的一个总结类。
*
*
* 抽象类与一般类的区别:
* 1 抽象类比一般类多个抽象方法
* 2 抽象类不可以实例化
* 特殊点: 抽象类中可以不定应抽象方法,这仅仅是不让该类建立对象
*/
abstract class student11{
/**
*抽象方法要存放在抽象类中。
*抽象方法也可以存在于接口中
*/
abstract void learn();
}
class aa extends student11{
void learn(){System.out.println("learn aa");};
}
class bb extends student11{
void learn(){System.out.println("learn bb");};
}
/**
*接口: 一个特殊的抽象类,当抽象类中的方法都是抽象的,那么该类可以通过接口形式来定义
*interface :
*特点
* 1没有构造方法,不能实例化;
* 2接口只能继承接口,不能继承类
* 3接口里没有普通方法,方法全是抽象的;
* 4接口里的方法默认修饰符是public abstract;
* 5接口里的字段全是全局常量,默认修饰符是public static final;
* 接口里的成员包括(常量和抽象方法):
*
*注意 接口中的成员都是public的
*总结: 1接口只定义了类应当遵循的规范,却不关心这些类的内部数据和其方法内的实现细节.
2接口只规定了这些类里必须提供的方法;从而分离了规范和实现.增强了系统的可拓展性和维护性;
*接口是不可以创建对象的,因为有抽象方法
*接口可以实现多继承
*/
interface inter{
public static final int NUM = 111;
public abstract void show();
}
interface inter1{
public abstract void show1();
}
//接口可以实现多继承
interface a extends inter,inter1{
public abstract void show2();
}
//test类可以在继承类的情况下,还能实现多个接口
class test extends student11 implements inter,inter1{
//需重写所有抽象方法
@Override
public void show() {}
@Override
public void show1() {}
@Override
void learn() {}
}
public class AbstractDemo {
public static void main(String[] args) {
aa aa = new aa();
aa.learn();
test t = new test();
t.show();
//System.out.println(t.NUM);
System.out.println(test.NUM);
System.out.println(inter.NUM);
}
}