标签:
概念
由来
当多个类出现相同功能,但是功能呢个主体不同,这时可以进行向上抽取。这时,只抽取功能定义,而不抽取功能主体
抽象
看不懂
书写规则
修饰符 abstract 返回值 方法名();
特性
1.抽象类就是通过继承来使用的,抽象方法一定在抽象类中,并且抽象方法不可以有方法体,普通方法可以写在抽象类中,并且可以有方法体,子类也会继承抽象类中的普通方法,子类对象可以调用[例1]
2.抽象方法和抽象类都必须被abstract关键词修饰[例2]
3.抽象方法不可以用new创建对象[实例化],因为调用抽象方法没有意义,抽象方法是空的[例3]
4.抽象类中的方法要被使用,必须由子类重写父类所有的抽象方法后,建立子类对象调用,如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类[例4]
细节问题
1.如果父类是抽象类,子类是普通类 那么子类必须重写父类中的抽象方法。
2.如果父类是抽象类,子类是抽象类子类可以选择是否重写。
3.父类是普通类,子类是抽象类。这种情况也可以。
4.抽象类中可不可以没有抽象方法。
---------->可以
5.普通类中可不可以有抽象方法。
---------->不可以
6.抽象类中可不可以有普通方法?
---------->可以
>>,普通方法可以写在抽象类中,并且可以有方法体,子类也会继承抽象类中的普通方法,子类对象可以调用
7.抽象类中有没有构造?
---------->有
>>帮助子类实例化,但是构造方法不可以被继承,只能供子类用super()或者super(参数)调用
8.关于abstract是否可以与staticfinal一起使用
static与abstract
---------->不可以
>>static修饰的方法可以通过类名调用,因为static修饰的方法不可以被重写,但是抽象类的方法是要求子类必须重写父类中的抽象方法的,所以相互矛盾
final与abstract
---------->不可以
>>这两个是完全相反的操作。因为抽象类是被继承才能使用,而被final修饰的类无法继承,所以产生矛盾,不能并存
private与abstract
---------->不可以
>>因为private私有化了,就不能被继承了。因为,当一个类被声明为private时,这个类就是一个内部类,内部类可以被其他外部类访问到,所以可以 继承,这时abstractheprivate可以并存。但是如果这个类不是内部类的话,private和abstract不可以并存
示例代码
例1
1 public class FinalDemo { 2 public static void main(String[] args) { 3 Abc abc = new Abc(); 4 abc.test1(); // 我是抽象类中的普通方法 5 abc.test(); // 我重写了抽象类中的方法 6 } 7 } 8 9 abstract class Abs { 10 abstract void test(); 11 12 void test1() { 13 System.out.println("我是抽象类中的普通方法"); 14 } 15 16 } 17 18 class Abc extends Abs { 19 20 @Override 21 void test() { 22 System.out.println("我重写了抽象类中的方法"); 23 }
例2
1 public class FinalDemo { 2 public static void main(String[] args) { 3 4 } 5 } 6 7 abstract class Abs { 8 abstract void test(); 9 10 }
例3
1 public class FinalDemo { 2 public static void main(String[] args) { 3 Abs abs=new Abs; 4 } 5 } 6 7 abstract class Abs { 8 abstract void test(); 9 10 11 }
视图
例4
1 public class FinalDemo { 2 public static void main(String[] args) { 3 4 } 5 } 6 7 abstract class Abs { 8 abstract void test(); 9 abstract void test1(); 10 11 } 12 13 class Abc extends Abs{ 14 15 @Override 16 void test() { 17 // TODO Auto-generated method stub 18 19 } 20 21 }
视图
标签:
原文地址:http://www.cnblogs.com/wcy123/p/5783694.html