質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

1275閲覧

文法について

wakataku1318

総合スコア19

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/02/03 04:01

###前提・実現したいこと
以下のプログラムで、文法的に間違っているところを探しているのですが、以下のエラーの出ているところが間違っているからコンパイルできないのでしょうか?

###発生している問題・エラーメッセージ

^ Ex4.java:40: A1 は abstract です。インスタンスを生成することはできません。 A1 p=new A1(); ^ Ex4.java:43: B1 は abstract です。インスタンスを生成することはできません。 B1 s=new B1(); ^

###該当のソースコード

java

1public abstract class A1{ 2 protected double points; 3 4 public abstract double getPoints(); 5 public void addPoints(double p){ 6 points += p; 7 } 8} 9 10public class A2 extends A1{ 11} 12 13public class A3 extends A1{ 14 public double getPoints(){ 15 return points; 16 } 17} 18 19public class B2 extends B1{ 20} 21 22public class B3 extends B1{ 23 public double getPoints(){ 24 return points; 25 } 26} 27 28public abstract class B1{ 29 protected double points; 30 public double getPoints(){ 31 } 32 33 public void addPoints(double p){ 34 points += p; 35 } 36} 37 38public class Ex4{ 39 public static void main(String args[]){ 40 A1 p=new A1(); 41 A1 q=new A2(); 42 A1 r=new A3(); 43 B1 s=new B1(); 44 B1 t=new B2(); 45 B1 u=new B3(); 46 } 47}

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

できる限り元の形を保ちつつコンパイル・実行できるようにすると以下のようになります

java

1 abstract class A1{ 2 protected double points; 3 4 public abstract double getPoints(); 5 public void addPoints(double p){ 6 points += p; 7 } 8} 9 10 class A2 extends A1{ 11public double getPoints(){return 0;}; 12 13} 14 15 class A3 extends A1{ 16 public double getPoints(){ 17 return points; 18 } 19} 20 21 class B2 extends B1{ 22} 23 24 class B3 extends B1{ 25 public double getPoints(){ 26 return points; 27 } 28} 29 30 abstract class B1{ 31 protected double points; 32 public double getPoints(){ 33return 0; 34 } 35 36 public void addPoints(double p){ 37 points += p; 38 } 39} 40 41public class Ex4{ 42 public static void main(String args[]){ 43 A1 p=new A1(){ public double getPoints(){return 0;};}; 44 A1 q=new A2(); 45 A1 r=new A3(); 46 B1 s=new B1(){ public double getPoints(){return 0; };}; 47 B1 t=new B2(); 48 B1 u=new B3(); 49 } 50}

投稿2017/02/03 04:23

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakataku1318

2017/02/03 04:28

わざわざありがとうございます! とてもわかりやすくて助かります。
guest

0

ベストアンサー

抽象クラスはインスタンス化することが出来ません。
なので、A1,B1のインスタンス化(new A1()のようなこと)はできません。

また、A2について抽象クラスの抽象メソッドがOverRideされていないためコンパイルエラーになると思います。

投稿2017/02/03 04:09

7tsuno

総合スコア310

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakataku1318

2017/02/03 04:14

回答ありがとうございます! 抽象クラスのインスタンスは作成できないんですね…。 勉強になりました。
guest

0

エラーメッセージの通りabstractを付けて宣言された抽象クラスはインスタンス化できません。
抽象クラスを継承してクラスを作るか、abstractを外してください。

投稿2017/02/03 04:06

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakataku1318

2017/02/03 04:15

回答ありがとうございます! 良い勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問