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 have three classes of object, most of which must implement two out of three interfaces. The interfaces look like this:
public interface Source { public void startSending(); } public interface Sender { public void setReceiver();
[Code] .....
That works fine, but I am wondering if pairing the interfaces into subinterfaces is a defensible methodology. For example, all classes that act like Producer must implement both the Source and Sender interfaces. And all classes that act like Relayer must implement the Sender and BlackHole interfaces. I could define two subinterfaces like this:
public interface Factory extends Source, Sender { } public interface Modifier extends BlackHole, Sender { }
I could then define my classes like this:
public class Producer implements Factory { } public class Relayer implements Modifier { } public class Consumer implements BlackHole { }
Within the class definitions, it makes no difference, as I will have to implement the same methods either way. But it seems more self-documentary to create the subinterfaces from their parent interfaces and name them in ways that reflect what the classes that implement them must actually do.
I am trying to figure out how I can most easily make it easier to make new types of units in my game. I have buildings and ships, and would like to know how I could make it easy to add new units. I have been recently told about interfaces, and have worked with inheritance a little bit.
What I would like to able to do is have it so that all of the variables and methods common to all ships could be stored in a superclass or interface, and same with the buildings. I would also like to be able to assign behaviours to the buildings and ships, maybe as interfaces, which could contain all of the methods and variables required for the functions of that ship or building.
For example, creating a new type of building that can shoot, build ships, and can regenerate nearby ships. So it would possible inherit all of the variables and methods common to all buildings, such as health, image, x, y, getX(), getY() etc. But it would then also gain the variables and methods essential for its functionality, such as shootRange, shoot(), regenRate, etc.
I am reading about interface and i see that classes are allowed inside interfaces which are implicitly static. Here is sample of code i created and i am able to access the static method and fields as well. Here is the code snippet.
public class TestInnerClass { public static void main(String[] args){ Test.NestedClass.printMe(); } } interface Test{ static class NestedClass{ static int x = 100 ; public static void printMe(){ System.out.println(x); } } }
My question is what is the use of such static classes inside interface? If i don't have access to Foo, i can't ever invoke NestedClass. Whats the design usage?
How do you declare methods for a class within the class whilst objects of the class are declared else where?
Say for instance, I have a main class Wall, and another class called Clock, and because they are both GUI based, I want to put a Clock on the Wall, so I have declared an instance object of Clock in the Wall class (Wall extends JFrame, and Clock extends JPanel).
I now want to have methods such as setClock, resetClock in the Clock class, but im having trouble in being able to refer to the Clock object thats been declared in the Wall class.
Is this possible? Or am I trying to do something thats not possible? Or maybe I've missed something really obvious?
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 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 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 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, "
So the first thing we did was make a program called memory calculator. now we are supposed to make a sub class that modifies the program to also do exponents and natural logs. Then to make a new class that acts as the driver for what is now called the scientific memory calculator which includes the exponent and log. I have watched this through debug and im a little confused. first off it creates a variable for currentValue in current and in sci which are my instances, which i dont think is what i really want to do, I am unsure how to get the things in the Scientificmemcalc to do stuff without calling them directly. so when i try to do the power feature it does everything correct but it sets the sci current value to the correct answer, and now i cant figure out how to pass it on to the current current value.
This is the memory calculator :
public class MemoryCalculator { public static void main(String[] args) { MemoryCalculator current = new MemoryCalculator();//creates an instance int choice = 0; do{//main loop System.out.println("Current value: " + current.getCurrentValue() + "
I created a superclass Ships and under that a class CivilShips. Under that HumanBulkFreighter.
I declared variables in Ships and CivilShips and wanted to have them set in HBF to a specific value. When I know try to compile them I get the following:
how to get access from variables in a super class or a subclass. Here is what I got:
1) I have a super class that is in Jar file, I created a link in Eclipse, I know that the link is created correctly, I am going to concentrate just in one variable, so I don’t have to put all the code here firstName; in the super class(the one that is define in the path)
public class CommissionEmployee { // Field descriptor #6 Ljava/lang/String; private java.lang.String firstName;
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?
I passed my abstract class private final reference to another concrete class and I used abstract class reference as parameter to that concrete class constructor and in my main method and null to that parameter then only that program executes correctly...i placing my code below ..if there is any error tell me where is error occurring then i will check my code...i think my code is right but little bit doubt abstract class concept.
{ } class concept1 extends concept { private final concept parent; public concept1(concept aparent) { parent=aparent; System.out.println(parent); } public static void main(String args[]) { //concept p=new concept1(null); concept c=new concept1(null); }}
I am under the assumption that In the return statement of getReciprocal() method(of the following code), a temporary Number object is created to hold the result of the calculation.
My question is, Number is an abstract class and we are only able to create reference of an abstract class not an object. But then how a temp Number object is created and returned?
class Gen<T extends Number>{ T ob; Gen(T ob){ this.ob = ob; } Number getReciprocal(){ // Number is abstract class