You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Learn/JavaCode/Jb27_AbstractClass.java

57 lines
1.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

public class Jb27_AbstractClass
{
public static void main(String[] args)
{
/*
抽象类特点:
抽象方法只有声明没有具体的实现此方法既是抽象方法需要被abstract修饰
抽象方法必须定义在抽象类中该类必须被abstract修饰
抽象类不能被实例化!因为调用抽象方法没意义。
抽象类必须由其子类覆盖了所有的抽象方法后,该子类才可以实例化,否则子类还是抽象类
抽象类有构造函数,用于给子类对象进行初始化
抽象类可以不定义抽象方法比较少见目的就是不让该类创建对象AWT适配器对象既是这种类
通常这个类里的方法有方法体,但没有内容
class Demo()
{
void show1()
{}
}
抽象关键字不可以和private因为抽象方法需要被子类需要覆盖私有后无法覆盖
不可以和static因为抽象方法不需要运行没有具体内容运行没意义直接调用类名就行
不可以和final因为不能被子类覆盖
抽象类与一般类的共同点:都是用来描述事物,在内部定义了成员
不同点:一般类有足够信息描述事物。抽象类描述事物的信息可能不足
一般类中不能定义抽象方法,只能定义非抽象方法。抽象类中可以定义抽象方法,也可以定义非抽象方法
一般类可以被实例化。抽象类不能被实例化。
抽象类一定是父类。因为需要子类覆盖其方法后才能对子类进行实例化。
*/
System.out.println("Hello World!");
}
}
abstract class Demo
{
abstract void show();
//将DemoA和DemoB向上抽取共性方法但是内容不同具体不清楚此时用abstract修饰
}
class DemoA
{
void show()
{
System.out.println("show A");
}
}
class DemoB
{
void show()
{
System.out.println("show B");
}
}