why don't I define my methods in a class, rather than going a level up and declaring it first in an abstract class/interface? If the point is to have different implementations for different needs, then we have the option to override the methods.
I am new to Java, and last week had an assignment to create a shopping list. I made it so that I have one class use a ProductData class to load an array of objects (description, price, priority). This week I need to take that program and change it so that it includes an Interface and Abstract Class. I need to also split one class up into at least 2 others.
I am having trouble getting my thoughts together and figuring out what to put in the interface and what to put in the abstract class. I'm thinking that it might be best to split up the ProductData class up into 3 different classes: description, price, and priority. Then have an interface with a print method. Each of those 3 classes will implement the interface.
As for the abstract class, have the price and priority extend the abstract class. The abstract class will be at the same level as the interface and contain the set and get methods. Right now they are of 2 different data types: int, double. Should I make both of them Double, and then use a method to change the priority to an int?
Should price and priority inherit from description, or should they all be at the same level? I am thinking that they should be at the same level because they all describe the item in the array.
My most confusing part is that I have no clue at all on how I can load that array when each object is split up in a different class. My professor went over ArayLists last week, and we can now use them if we want, but the assignment doesn't explicitly say that we should change it to an Array List. Where does the constructor for the ProductData() go? Do I split it up into 3 different constructors?
I know whats the interfaces and abstract class and also know that difference between interface and abstract class,but here my doubt is eventhough abstract class more advantage than the interface,then why should we use interfaces and when?
What this interface inside that abstract class does. Looking for some examples to how can i use it ....
public abstract class Expression { public abstract String toString(); public abstract SimpleExpression evaluate(); public void show() { System.out.println(this + " = " + evaluate());
interface: methods - abstract, default, static ONLY(abstract methods have no body, while static and defaults do, right?) fields - public, static, final ONLY abstract class: a normal class, but has at least one abstract method methods - all i.e., static, non-static, abstract (can it have a default method?) fields - all i.e., public, protected, private / final, non-final / static, non-static
I am writing small pieces of code to make sure I understand Java basics and I have the following.
package teams1; public abstract class Team1{ private String sport = new String(); public abstract String getSport(); public abstract void setSport(); } import teams1.*;
[Code] .....
It doesn't compile because sport is private in the super class, but I thought FootballTeam1 would inherit it's own copy of sport because it is extending Team1.
I'm having difficulty understanding this small piece of code:
package food; public abstract class Fruit { private String color; private String tasteType; public void setColor(String color) { this.color = color; } public abstract void setTasteType(String taste); }
The above is an abstract class which describes the basic structure that every fruit should "extend".
The below is a concrete subclass of the Fruit class called Apple.
import food.Fruit; class Apple extends Fruit { public void setTasteType(String taste) { tasteType = taste; } }
Also do note that the two pieces of code are in different packages!
Upon compiling the Apple class I get the following error: Apple.java:4: error: tasteType has private access in Fruit tasteType = taste; ^
What I don't understand is this: I've given a non-abstract implementation to the "setTasteType" method in the Apple class and clearly setTasteType should have the authority to modify the private instance variables of Fruit. But it turns out I'm wrong.
I am stuck. It seems like I have done everything by the book but I keep getting the same error: cannot find symbol. The error is specifically addressing lines 9, 10, and 11 in the Alien class file. All that is supposed to happen is an output of information for the two types of aliens.
Java Code:
import javax.swing.*; public class CreateAliens { public static void main (String[] args) { Martian aMartian = new Martian(); Jupiterian aJupiterian = new Jupiterian(); JOptionPane.showMessageDialog (null, "
I have the following code that will make linked list and order its elements using self referential objects. but i have the following error: incompatible types
required: ListNode<T#2> found: ListNode<T#1> where T#1,T#2 are type-variables: T#1 extends Comparable declared in method <T#1>insertInOrder(T#1) T#2 extends Comparable declared in class OrderedList
import java.util.*; public class ListNode<T> { ListNode<T> nextNode; T data; public ListNode(T item) { this(item, null);
If I lets say have an interface Animal, and I create a lot of classes with a different animal name that implement the interface Animal. Then I create an ArrayList of Animal. Then I would put in lets say Dog class into the ArrayList, which has custom methods and data that the Animal Interface doesn't have, is this data ripped away except for the methods that are put in the Animal interface? So if I would cast the Animal back to Dog, would it retain all the data that existed before it was placed in the ArrayList?
I am writing a game in Java for Android (although my question isn't Android or Game Dev specific).
I have a SceneManager class and a Scene interface and then various other classes that implement the Scene interface (Code at the end of this post).
Basically, in my MainGame class (which also implements the Scene Interface for Touch Event capturing purposes) I hold the bulk of my game code. Methods in this class are then called from my Level classes. (most of these are needed in all levels so it makes sense to hold them here and call them from the levels to eliminate unnecessary code duplication)
So, I have Level1, Level2......... Level20 classes which all implement Scene.
Now, the problem comes because in only 2 of my Levels something can happen (that can't in the other 18) and I need to run a response method in these 2 levels (the method isn't exactly the same, the response to this event happening is different for both levels).
To run common methods from my classes, I use my Scene Manager like this:
This works great as all Level's have an updateLogic(); and render(); method.
So from my mainGame class, I am doing something like : (pseudo code)
public void checkIfSomethingHappened(){ if (something happens){ if (currentLevel==5){ Level5.response();}
[Code]....
The above would be called from my 2 level classes. So something like:
MainGame.checkIfSomethingHappened(); //Called in addition to the normal methods that make up that level
I don't really want to have this (second) 'if' statement here in the middle of my performance critical game loop.
What I'm after is something like this:
if (something happens){ SceneManager.getInstance().getCurrentScene().response(); }
However, this would require me to put stubs in the other 18 classes.
I'm thinking there must be a way to do this as the SceneManager already knows the current scene so it seems a waste checking it again via an if (or switch) statement. What is the best way to do this without having to put stubs into classes that don't require this method?
I am new a creating GUIs and am not quite sure how to correctly make one. I have done the inheritance parts, and created two extra appliances: a washer and dryer. Now Creating the GUI ....
Here are the instructions to my project.
Introduction to GUIs (+ some inheritance)
For this assignment, you are going to create a user interface that interacts with the setters and getters of some classes that you will create.
First, create an abstract class called Appliance. This abstract class should have two attributes (dealing with household appliances) and two abstract methods called turnOn() and turnOff(). These methods should return void.
Then, create two subclasses of Appliance that represent household appliances (like a Refrigerator or Stove ((don't use those!))). These subclasses should have two attributes that are specific to the various appliance. Each subclass should implement the turnOn() and turnOff() methods. These methods should print to the command line some information about the appliance as it turns on and off.
Now, the fun part! Create a GUI interface!
Your window should have two panels: one for each appliance subclass. Each panel should have 4 textboxes (with appropriate labels) to receive/display information that correspond to the 4 attributes (2 from Appliance and 2 from the subclass) for each subclass.You also need 2 buttons on each panel: A Get button and a Set button.
When the Get button is pressed, the text boxes should be filled with the information from the instantiated object of the appropriate subclass. When the Set button is pressed, the object should then contain the information contained that the user has altered.
In your main method, you should create an object of each subclass, and prefill it with information (either using the constructor or the setters), then display your GUI. You should now be able to get and set the information for your objects from the GUI.
At least one of your attributes for each subclass should be numeric
Note that you will need to handle incorrectly formatted input (You can use exception handling to do this if you want to. Wrapper classes also will work)
If there is text in the boxes when the "Get" button is pressed, it should be overwritten by what is in the object. Remember that these two panels should both be on screen at the same time.
You don't need 2 different windows, one window: 2 panels.
I am new to Java and have been learning it. I have a question here. I came across the following Java class and trying to understand it thoroughly but got confused how it is able to call an abstract method. Here is the code I am referring to :
package sampleapps.gui; import javax.swing.*; import java.awt.*; public class InnerClassAnimationExample { int x=70, y=70; public static void main(String[] args) {
[Code] ....
So, in the code above, there is an inner class NewMyDrawPanel which has a paintComponent(Graphics g) method. I have highlighted 2 lines of code above.
Line 1 : Graphics2D g2d = (Graphics2D) g; Line 2 : g2d.fillOval(x,y,40,40);
I understand we are type casting reference g to Graphics2D reference g2d and we are calling fillOval() method on g2d. I don't see a fillOval() method in Graphics2D class but it is there in Graphics class and fillOval method is an abstract method.
So, my question here is :
1. If we are not able to instantiate an abstract class(Graphics2D and Graphics classes), how are we able to access the fillOval() abstract method,
2. Secondly, since the fillOval() method is an abstract method, it does not have any implementation for the method.
However, when I call the method fillOval() on Graphics2D reference, I was able to draw and fill an oval of the specified co-ordinates. So, where would the actual implementation code be?
SimpleCharacterReader.java:: import java.io.EOFException; import java.util.Random; public class SimpleCharacterReader implements ICharacterReader { private int m_Pos = 0;
[Code] ....
My task is as follows:
1.) Write a class that takes an ICharacterReader interface as an argument and returns a list of word frequencies ordered by word count and then alphabetically.
And also write a main method of a console application that exercises this class using a SimpleCharacterReader, and prints the output to the console.
For example, if the stream returns "It was the best of times, it was the worst of times" then the output will be:
it - 2; of - 2; the - 2; times -2; was - 2; best - 1; worst - 1;
2.) Test the answers in part 1, by writing unit test cases.
How to pass interface as an argument and what is meant by "writing unit test case"?
I am trying to implement this method in another class but I'm not sure how to do so. My attempt is:
public getCalls(){ return getCalls(); }
When I run the program it sends the following exception:
Exception in thread "main" java.lang.StackOverflowError at FibonacciForget.getCalls(FibonacciForget.java:14) and it highlights the [return getCalls();] part.
What is the correct way to implement the getCalls() method?
I've written a java application with several classes all in the same .java file. It works just fine. Now, I've broken it up so that each class has its own .java file. Still works fine. My next step is to put those classes into a package, but I'm not about to get the program to run.The .java source files are all in /home/user/src
I've set the CLASSPATH to /home/user/src..All of the source files have "package com.myfirm.program" on the first line.I compiled the application with:
the compiler created the directory: /home/user/src/com/myfirm/program and put all of the .class files in there.So how do I get the program to run? if I run from /home/usr/src
java File1
I get: Exception in thread "main" java.lang.NoClassDefFoundError: File1 (wrong name: com/myfirm/program/Program)
What is exactly reason for existence of inner classes? Are there problems that without them you can not (or be very hard to) resolve? Anything beside emulate multiple inheritance, when you need to extends the real classes ( not implements multiple interfaces) ?