09-03 Java 抽象类

前端之家收集整理的这篇文章主要介绍了09-03 Java 抽象类前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

抽象类的特点

功能称为抽象的功能,而一个类中如果有抽象的功能,该类必须是抽象类。
<span style="color: #ff0000;"&gt;抽象类的特点:
    A:抽象类和抽象<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>必须用abstract关键字修饰
    B:抽象类中不一定有抽象<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>,但是有抽象<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>的类必须定义为抽象类
    C:抽象类不能实例化
        因为它不是具体的。
        抽象类有构造<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>,但是不能实例化?构造<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>的作用是什么呢?
        用于子类访问<a href="https://www.jb51.cc/tag/fulei/" target="_blank" class="keywords">父类</a>数据的初始化
    D:抽象的子类
        a:如果不想重写抽象<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>,该子类是一个抽象类。
        b:重写所有的抽象<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>,这个时候子类是一个具体的类。

    抽象类的实例化其实是靠具体的子类实现的。是多态的方式。
        Animal a = new Cat();

<span style="color: #008000;">*/

<span style="color: #008000;">//<span style="color: #008000;">abstract class Animal <span style="color: #008000;">//<span style="color: #008000;">抽象类的声明格式
<span style="color: #ff0000;">abstract <span style="color: #0000ff;">class<span style="color: #000000;"> Animal {
<span style="color: #ff0000;">//抽象方法
//public abstract void eat(){} //空方法体,这个会报错。抽象方法不能有主体,大括号
<span style="color: #0000ff;">public <span style="color: #ff0000;">abstract <span style="color: #0000ff;">void<span style="color: #000000;"> eat();

</span><span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; Animal(){}

}

<span style="color: #008000;">//<span style="color: #008000;">子类是抽象类
<span style="color: #ff0000;">abstract <span style="color: #0000ff;">class Dog <span style="color: #0000ff;">extends<span style="color: #000000;"> Animal {}

<span style="color: #008000;">//<span style="color: #008000;">子类是具体类,重写抽象方法
<span style="color: #0000ff;">class Cat <span style="color: #0000ff;">extends<span style="color: #000000;"> Animal {
<span style="color: #0000ff;">public <span style="color: #0000ff;">void<span style="color: #000000;"> eat() {
System.out.println("猫吃鱼"<span style="color: #000000;">);
}
}

<span style="color: #0000ff;">class<span style="color: #000000;"> AbstractDemo {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">创建对象
<span style="color: #008000;">//<span style="color: #008000;">Animal是抽象的; 无法实例化
<span style="color: #008000;">//<span style="color: #008000;">Animal a = new Animal();
<span style="color: #ff0000;">//通过多态的方式
Animal a = new<span style="color: #000000;"><span style="color: #ff0000;"> Cat();
a.eat();
}
}

抽象类的成员特点:

方法:有。 用于子类访问父类数据的初始化。 成员方法:既可以是抽象的,也可以是非抽象的。
抽象类的成员<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>特性:
    A:抽象<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a> 强制要求子类做的事情。
    B:非抽象<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a> 子类继承的事情,提高<a href="https://www.jb51.cc/tag/daima/" target="_blank" class="keywords">代码</a>复用性。

<span style="color: #008000;">*/
<span style="color: #0000ff;">abstract <span style="color: #0000ff;">class<span style="color: #000000;"> Animal {
<span style="color: #0000ff;">public <span style="color: #0000ff;">int num = 10<span style="color: #000000;">;
<span style="color: #0000ff;">public <span style="color: #0000ff;">final <span style="color: #0000ff;">int num2 = 20<span style="color: #000000;">;

</span><span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; Animal() {}

</span><span style="color: #0000ff;"&gt;public</span> Animal(String name,<span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; age){}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;abstract</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; show();

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; method() {
    System.out.println(</span>"method"<span style="color: #000000;"&gt;);
}

}

<span style="color: #0000ff;">class Dog <span style="color: #0000ff;">extends<span style="color: #000000;"> Animal {
<span style="color: #0000ff;">public <span style="color: #0000ff;">void<span style="color: #000000;"> show() {
System.out.println("show Dog"<span style="color: #000000;">);
}
}

<span style="color: #0000ff;">class<span style="color: #000000;"> AbstractDemo2 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">创建对象
Animal a = <span style="color: #0000ff;">new<span style="color: #000000;"> Dog();
a.num = 100<span style="color: #000000;">;
System.out.println(a.num);
<span style="color: #008000;">//<span style="color: #008000;">a.num2 = 200;
<span style="color: #000000;"> System.out.println(a.num2);
System.out.println("--------------"<span style="color: #000000;">);
a.show();
a.method();
}
}

抽象类案例

分析:从具体到抽象 猫: 成员变量:姓名,年龄 构造<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>:无参,带参 成员<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>:吃饭(猫吃鱼) 狗: 成员变量:姓名,年龄 构造<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>:无参,带参 成员<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>:吃饭(狗吃肉) 因为有共性的<a href="https://www.jb51.cc/tag/neirong/" target="_blank" class="keywords">内容</a>,所以就<a href="https://www.jb51.cc/tag/tiqu/" target="_blank" class="keywords">提取</a>了一个<a href="https://www.jb51.cc/tag/fulei/" target="_blank" class="keywords">父类</a>。动物。 但是又由于吃饭的<a href="https://www.jb51.cc/tag/neirong/" target="_blank" class="keywords">内容</a>不一样,所以吃饭的<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>是抽象的, 而<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>是抽象的类,类就必须定义为抽象类。 抽象动物类: 成员变量:姓名,年龄 构造<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>:无参,带参 成员<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>:吃饭(); 实现:从抽象到具体 动物类: 成员变量:姓名,年龄 构造<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>:无参,带参 成员<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>:吃饭(); 狗类: 继承<a href="https://www.jb51.cc/tag/zidong/" target="_blank" class="keywords">自动</a>物类 重写吃饭(); 猫类: 继承<a href="https://www.jb51.cc/tag/zidong/" target="_blank" class="keywords">自动</a>物类 重写吃饭();

<span style="color: #008000;">*/
<span style="color: #008000;">//<span style="color: #008000;">定义抽象的动物类
<span style="color: #0000ff;">abstract <span style="color: #0000ff;">class<span style="color: #000000;"> Animal {
<span style="color: #008000;">//<span style="color: #008000;">姓名
<span style="color: #0000ff;">private<span style="color: #000000;"> String name;
<span style="color: #008000;">//<span style="color: #008000;">年龄
<span style="color: #0000ff;">private <span style="color: #0000ff;">int<span style="color: #000000;"> age;

</span><span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; Animal() {}

</span><span style="color: #0000ff;"&gt;public</span> Animal(String name,<span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; age) {
    </span><span style="color: #0000ff;"&gt;this</span>.name =<span style="color: #000000;"&gt; name;
    </span><span style="color: #0000ff;"&gt;this</span>.age =<span style="color: #000000;"&gt; age;
}

</span><span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; String getName() {
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; name;
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; setName(String name) {
    </span><span style="color: #0000ff;"&gt;this</span>.name =<span style="color: #000000;"&gt; name;
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; getAge() {
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; age;
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span> setAge(<span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; age) {
    </span><span style="color: #0000ff;"&gt;this</span>.age =<span style="color: #000000;"&gt; age;
}

</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;定义一个抽象<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a></span>
<span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;abstract</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; eat();

}

<span style="color: #008000;">//<span style="color: #008000;">定义具体的狗类
<span style="color: #0000ff;">class Dog <span style="color: #0000ff;">extends<span style="color: #000000;"> Animal {
<span style="color: #0000ff;">public<span style="color: #000000;"> Dog() {}

</span><span style="color: #0000ff;"&gt;public</span> Dog(String name,<span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; age) {
    </span><span style="color: #0000ff;"&gt;super</span><span style="color: #000000;"&gt;(name,age);
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; eat() {
    System.out.println(</span>"狗吃肉"<span style="color: #000000;"&gt;);
}

}

<span style="color: #008000;">//<span style="color: #008000;">定义具体的猫类
<span style="color: #0000ff;">class Cat <span style="color: #0000ff;">extends<span style="color: #000000;"> Animal {
<span style="color: #0000ff;">public<span style="color: #000000;"> Cat() {}

</span><span style="color: #0000ff;"&gt;public</span> Cat(String name,age);
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; eat() {
    System.out.println(</span>"猫吃鱼"<span style="color: #000000;"&gt;);
}

}

<span style="color: #008000;">//<span style="color: #008000;">测试类
<span style="color: #0000ff;">class<span style="color: #000000;"> AbstractTest {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">测试狗类
<span style="color: #008000;">//<span style="color: #008000;">具体类用法
<span style="color: #008000;">//<span style="color: #008000;">方式1:
Dog d = <span style="color: #0000ff;">new<span style="color: #000000;"> Dog();
d.setName("旺财"<span style="color: #000000;">);
d.setAge(3<span style="color: #000000;">);
System.out.println(d.getName()+"---"+<span style="color: #000000;">d.getAge());
d.eat();
<span style="color: #008000;">//<span style="color: #008000;">方式2:
Dog d2 = <span style="color: #0000ff;">new Dog("旺财",3<span style="color: #000000;">);
System.out.println(d2.getName()+"---"+<span style="color: #000000;">d2.getAge());
d2.eat();
System.out.println("---------------------------"<span style="color: #000000;">);

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;多态<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a> 测试</span>
    Animal a = <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Dog();
    a.setName(</span>"旺财"<span style="color: #000000;"&gt;);
    a.setAge(</span>3<span style="color: #000000;"&gt;);
    System.out.println(a.getName()</span>+"---"+<span style="color: #000000;"&gt;a.getAge());
    a.eat();

    Animal a2 </span>= <span style="color: #0000ff;"&gt;new</span> Dog("旺财",3<span style="color: #000000;"&gt;);
    System.out.println(a2.getName()</span>+"---"+<span style="color: #000000;"&gt;a2.getAge());
    a2.eat();

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;练习:测试猫类</span>

<span style="color: #000000;"> }
}

抽象类案例

属性:姓名、工号以及工资。 经理也是员工,除了含有员工的属性外,另为还有一个奖金属性。 请使用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。
分析:
    普通员工类
        成员变量:姓名、工号以及工资。
        成员<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>:工作
    经理类:
        成员变量:姓名、工号以及工资,奖金<a href="https://www.jb51.cc/tag/shuxing/" target="_blank" class="keywords">属性</a>
        成员<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>:工作

实现:
    员工类:
    普通员工类:
    经理类:

<span style="color: #008000;">*/
<span style="color: #008000;">//<span style="color: #008000;">定义员工类
<span style="color: #0000ff;">abstract <span style="color: #0000ff;">class<span style="color: #000000;"> Employee {
<span style="color: #008000;">//<span style="color: #008000;">姓名、工号以及工资
<span style="color: #0000ff;">private<span style="color: #000000;"> String name;
<span style="color: #0000ff;">private<span style="color: #000000;"> String id;
<span style="color: #0000ff;">private <span style="color: #0000ff;">int<span style="color: #000000;"> salary;

</span><span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; Employee() {}

</span><span style="color: #0000ff;"&gt;public</span> Employee(String name,String id,<span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; salary) {
    </span><span style="color: #0000ff;"&gt;this</span>.name =<span style="color: #000000;"&gt; name;
    </span><span style="color: #0000ff;"&gt;this</span>.id =<span style="color: #000000;"&gt; id;
    </span><span style="color: #0000ff;"&gt;this</span>.salary =<span style="color: #000000;"&gt; salary;
}

</span><span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; String getName() {
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; name;
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; setName(String name) {
    </span><span style="color: #0000ff;"&gt;this</span>.name =<span style="color: #000000;"&gt; name;
}

</span><span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; String getId() {
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; id;
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; setId(String id) {
    </span><span style="color: #0000ff;"&gt;this</span>.id =<span style="color: #000000;"&gt; id;
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; getSalary() {
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; salary;
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span> setSalary(<span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; salary) {
    </span><span style="color: #0000ff;"&gt;this</span>.salary =<span style="color: #000000;"&gt; salary;
}

</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;工作</span>
<span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;abstract</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; work();

}

<span style="color: #008000;">//<span style="color: #008000;">普通员工类
<span style="color: #0000ff;">class Programmer <span style="color: #0000ff;">extends<span style="color: #000000;"> Employee {
<span style="color: #0000ff;">public<span style="color: #000000;"> Programmer(){}

</span><span style="color: #0000ff;"&gt;public</span> Programmer(String name,<span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; salary) {
    </span><span style="color: #0000ff;"&gt;super</span><span style="color: #000000;"&gt;(name,id,salary);
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; work() {
    System.out.println(</span>"按照需求写<a href="https://www.jb51.cc/tag/daima/" target="_blank" class="keywords">代码</a>"<span style="color: #000000;"&gt;);
}

}

<span style="color: #008000;">//<span style="color: #008000;">经理类
<span style="color: #0000ff;">class Manager <span style="color: #0000ff;">extends<span style="color: #000000;"> Employee {
<span style="color: #008000;">//<span style="color: #008000;">奖金
<span style="color: #0000ff;">private <span style="color: #0000ff;">int money; <span style="color: #008000;">//<span style="color: #008000;">bonus 奖金

<span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; Manager(){}

</span><span style="color: #0000ff;"&gt;public</span> Manager(String name,<span style="color: #0000ff;"&gt;int</span> salary,<span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; money) {
    </span><span style="color: #ff0000;"&gt;super(name,salary);
    this.money =</span><span style="color: #000000;"&gt;<span style="color: #ff0000;"&gt; money;</span>
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; work() {
    System.out.println(</span>"跟客户谈需求"<span style="color: #000000;"&gt;);
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; getMoney() {
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; money;
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span> setMoney(<span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; money) {
    </span><span style="color: #0000ff;"&gt;this</span>.money =<span style="color: #000000;"&gt; money;
}

}

<span style="color: #0000ff;">class<span style="color: #000000;"> AbstractTest4 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">测试普通员工
Employee emp = <span style="color: #0000ff;">new<span style="color: #000000;"> Programmer();
emp.setName("林青霞"<span style="color: #000000;">);
emp.setId("czbk001"<span style="color: #000000;">);
emp.setSalary(18000<span style="color: #000000;">);
System.out.println(emp.getName()+"---"+emp.getId()+"---"+<span style="color: #000000;">emp.getSalary());
emp.work();
System.out.println("-------------"<span style="color: #000000;">);
emp = <span style="color: #0000ff;">new Programmer("林青霞","czbk001",18000<span style="color: #000000;">);
System.out.println(emp.getName()+"---"+emp.getId()+"---"+<span style="color: #000000;">emp.getSalary());
emp.work();
System.out.println("-------------"<span style="color: #000000;">);

    </span><span style="color: #008000;"&gt;/*</span><span style="color: #008000;"&gt;
    emp = new Manager();
    emp.setName("刘意");
    emp.setId("czbk002");
    emp.setSalary(8000);
    emp.setMoney(2000);
    </span><span style="color: #008000;"&gt;*/</span>
    <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;由于子类有特有的<a href="https://www.jb51.cc/tag/neirong/" target="_blank" class="keywords">内容</a>,所以我们用子类来测试</span>
    Manager m = <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Manager();
    m.setName(</span>"刘意"<span style="color: #000000;"&gt;);
    m.setId(</span>"czbk002"<span style="color: #000000;"&gt;);
    m.setSalary(</span>8000<span style="color: #000000;"&gt;);
    m.setMoney(</span>2000<span style="color: #000000;"&gt;);
    System.out.println(m.getName()</span>+"---"+m.getId()+"---"+m.getSalary()+"---"+<span style="color: #000000;"&gt;m.getMoney());
    m.work();
    System.out.println(</span>"-------------"<span style="color: #000000;"&gt;);

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;通过构造<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>赋值</span>
    m = <span style="color: #0000ff;"&gt;new</span> Manager("刘意","czbk002",8000,2000<span style="color: #000000;"&gt;);
    System.out.println(m.getName()</span>+"---"+m.getId()+"---"+m.getSalary()+"---"+<span style="color: #000000;"&gt;m.getMoney());
    m.work();
}

}

抽象类的几个小问题:

方法,可不可以定义为抽象类?如果可以,有什么意义? A:可以。 B:不让创建对象。要访问它,只能通过子类。

<span style="color: #ff0000;">abstract不能和哪些关键字共存?
private 冲突
final 冲突
static 无意义
<span style="color: #008000;">*/
<span style="color: #0000ff;">abstract <span style="color: #0000ff;">class<span style="color: #000000;"> Fu {
<span style="color: #008000;">//<span style="color: #008000;">public abstract void show();

</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;非法的修饰符组合: abstract和private
</span><span style="color: #ff0000;"&gt;//因为私有不能被继承,而抽象又要求用继承
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;private abstract void show();

</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;非法的修饰符组合
</span><span style="color: #ff0000;"&gt;//因为最终的不能读写,而抽象又要求用继承
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;final abstract void show();    

</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;非法的修饰符组合
</span><span style="color: #ff0000;"&gt;//因为static<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>,可以通过类名<a href="https://www.jb51.cc/tag/diaoyong/" target="_blank" class="keywords">调用</a>;而abstract定义的<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>,又没有<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>体;所以无意义</span>
<span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;abstract</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; show();

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; method() {
    System.out.println(</span>"method"<span style="color: #000000;"&gt;);
}

}

<span style="color: #0000ff;">class Zi <span style="color: #0000ff;">extends<span style="color: #000000;"> Fu {
<span style="color: #0000ff;">public <span style="color: #0000ff;">void<span style="color: #000000;"> show() {}
}

<span style="color: #0000ff;">class<span style="color: #000000;"> AbstractDemo3 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
Fu.method();
}
}

 

原文链接:https://www.f2er.com/java/403345.html

猜你在找的Java相关文章