How To Achieve Runtime Polymorphism By Data Members
Apr 19, 2014can we achieve runtime polymorphism by data members?
View Repliescan we achieve runtime polymorphism by data members?
View RepliesI have a problem with this ascii animation program I am working on. I declared a method inside of my class AsciiAnimation extends JFrame implements ActionListener, called
package AsciiAnimation;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import javax.swing.*;
public class AsciiAnimation extends JFrame implements ActionListener{
int currentFrame = 0;
ArrayList<String> frameList = new ArrayList<String>();
[Code] ....
Basically I just am trying to figure out how java works with me accessing those 2 data members, currentFrame and frameList inside of my first class ALL in the same package.
I was giving a quick skim to some tutorials on the internet where I have found the exception that is handled is also declared in the throws clause of the method wrapping the try-catch block. For a code representation consider the following:
public void methodName() throws IOException {
try {
...
} catch (IOException ex) {
.... TODO handle exception
}
}
I've a question regarding polymorphism.
Is polymorphism possible only when the superclass is abstract?
While studying polymorphism , i have some doubts that i am unable to clarify ..... Here they are :
Suppose our inheritance ladder be :
C1 <- C2 <- C3 <-....... <- C100
where C1 is most general (superclass) and C100 is most specific class .
Now , if i write java code in my main() :
C21 Obj = new C100();
Obj.someMethod();
So, what will happen in scenarios as given below :
Scenario - 1) If someMethod() is only defined in C1 ? How will compiler search for this someMethod() ?Will it be executed ?
Scenario - 2) If that someMethod() is static and only defined in C1 , then how will it be searched and executed ?
Scenario - 3) If someMethod() is only present in C100 , then what will happen ?
I have difficulty understanding the following behaviour.
class A {
public String string = "a";
public String toString() {
return string;
}
}
class B extends A {
[code]...
The output of the program is 'c'. This is expexted behaviour. But if class B is changed as follows,
class B extends A {
public String string = "b";
}
Now the program prints 'a' instead of 'c'. Why the statement: b.string = "c"; is not taken into account?
I have a program I want to make (text based, no gui). There is the main class, an Employee class (sort of a template), a CrewMember class, and a Manager class.
I'll put the code for each class an explain the problem I have.
package polymorphism;
import java.util.Random;
public class Start {
public static void main(String[] args) {
Random rand = new Random();
Employee staff[] = new Employee[5];
for(int i = 0; i < staff.length; i++){
[Code] ....
Some of the code is a bit incomplete simply because I ran into the problem. As you can see I made an array in the Start class and it holds objects of Employee type, but create a new instance of either a crew member or a manager, sets their wages, hours, and bonus if applicable. I know if I create an array of a certain type, I can't call upon the subclass' method (Manager in this case) because it has a new method that I added. What I'm trying to do is pretty much call upon the getSalary() method in the Manager class/object, but of course I can't. What way would i be able to do that? I tried looking for some answers. I read about making the superclass abstract and implementing it into the subclasses. Would that be an option?
I would eliminate the ifs and elses using polymorphisms that solves this lot of ifs? How could I solve this?
View Replies View RelatedRecently I have been thinking of using additional interfaces in one of my libraries to hide certain "unsafe" methods of my classes from the user. I would like to get the opinion of other, more advanced java programmers on this issue.
What I do is something like the following (heavily simplified):
public interface ReadOnly {
public int getValue();
}
public interface ReadWrite extends ReadOnly {
public void setValue(int value);
[Code] ....
The user would have access to the ExternalInterface. The ExternalInterface is controlling the values of the InternalComponent. The user can get the InternalComponent, but typecasted to a ReadOnly which does not expose the setters.
Now the thing is the user can still access the setValue method by typecasting the ReadOnly to an InternalComponent or to a ReadWrite, and that is not bad. If the user knows exactly what he/she is doing this will give him/her more flexibility and more power. But this way it *should* become obvious that this is not the intended use and perhaps the extra work of typecasting will discourage the user from doing this.
When importing static members of a class. Why are they only accessible within the constructor of the calling class, and not outside of it? Here's the source code to understand my question.
package Certification;
public class ExamQuestion {
static public int marks ;
static public void print(){
System.out.println(100);
[Code] ....
Why is the equals-method in the super-class invoked? Shouldn't the equals-method in the sub-class be invoked(at least in the first if-statement since b2 is a B(i know B is also an A))?Is the equals-method overridden? Or does B have its own equals-method?
class SomeClass{
public static void main(String[] args) {
B b1 = new B(123,1);
B b2 = new B(123,2);
[code]...
When we say derived class that means copy of base class plus subclass specific implementations. But when it comes to private members it cannot be accessible in subclass scope. Does it mean byte code generated for subclass doesn't has byte code of private members of super class ?
View Replies View RelatedWhy static member are allowed to be accessed with class-name and a null reference?
Here's the given code.
class Employee{
public static Integer companyId = 1001; // this could be private.
public static Integer getCompanyId(){
return Employee.companyId;
}
//a setter method will be here if the companyId will be private.
}
public class TestStatic{
public static void main(String[] args){
Employee emp =null;
emp.companyId = 11111;
System.out.println(emp.getCompanyId());
}
}
In this code the static members of a class are accessible by the null reference of that class.
These can also be access by the class (Employee.companyId or Employee.getCompanyId()).
What is the difference here in both. why a null reference can access these static members.
I have two classes in two different files.
Color.java and Light.java
The Color class:
public class Color {
private int red;
private int green;
private int blue;
public Color(){
red = 0;
green = 0;
blue = 0;
}
And i have the Light class :
public class Light {
private Color color1;
private boolean switchedon;
public Light(int red, int green, int blue){
//dont know what to write here . how can i use the members of the Color class here ? without using extends.
}
}
I was trying to come up with the design for a library. Here are the requirements:
The library maintains a record of books and its members. It allows members to check out books. Books can be searched by author name or title. The books are classified into 4 categories - General, Sports, Politics, Business.
I've come up with this initial design:
Classes:
Category (enum)BookMemberLibrary
Category
Attributes: SPORTS, GENERAL, POLITICS, BUSINESS
Book
Attributes: String title, String authorName, Category category, boolean checkedOut
[Code] .....
If i have a class(lets say class name is Approval) with the following private members: String recip_id, Int accStat, String pDesc, String startDate How can i create public get and setter methods for these private members of the class?
View Replies View RelatedI am trying to implement the following example to override the equality and hashCode method if the class has reference type member. I do get the expected result "true" for equal and "false" for non-equal objects. But the print statement in the Circle's equal method is not executed when the objects values are not equal. I don't know what i am missing, though i get the equality result "false" as expected for non equal objects.
class Point{
private int x, y;
Point (int x, int y) {
this.x =x;
this.y = y;
[code]....
I have a quick polymorphism question. I have a parent class and a sub class that extends the parent class. I then declare an array of parent class but instantiate an index to the sub class using polymorphism. Do I have to have all the same methods in the child class that I do in the parent class? Here is an example of what I mean.
public class ParentClass
{
public ParentClass(....){ }
public String doSomething(){ }
}
public class ChildClass extends ParentClass
{
public ChildClass(....)
[Code] ....
Is polymorphism similar to interfaces where the child class needs all the same methods?
I am to design a program in java that will allow a user to Input a list of your family members along with their age and state where they reside. Determine and print the average age of your family and print the names of anyone who live in Texas. I have tried but my results are wrong.
View Replies View Relatedi am getting runtime Exception Saying classCastException .here is my code where i am getting classcastException.
public class ModifyDetailsServlet extends HttpServlet {
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
[code]....
why get a runtime error when choosing option 2 after adding a contact?
Main:
package contactlist;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
[code]....
I have a question about updating a grid during runtime in GridWorld. I'm making a game called Flood-It (basically, you click on squares to change their color and attempt to get all of the squares the same color in the grid) and I'm having trouble with changing the grid size. I made my own world class, called CellWorld.
import info.gridworld.actor.*;
import java.util.ArrayList;
import info.gridworld.grid.Location;
import java.awt.Color;
import javax.swing.JOptionPane;
[code]...
Now, let me narrow down the issue. It is in the runner class:
world.setGrid(new BoundedGrid<Actor>(world.getLength(),world.getWidth()));
Whenever a user wants to change the grid size after playing the game, this is supposed to set the grid to the new updated size, but it never changes in the actual game, i.e. the user just won a 2x2 game, attempts to change the size to 10x10, but the grid stays 2x2. By debug testing, I can say for certain that everything else works, such as the maxStepCalc and loading the grid. The only issue is the new grid not showing up.
How can I add computed/derived column to an existing TableModel ?
I've 7 column in the existing TableModel. Now I've to add 8th column and it'll be based on Col2, Col3 & Col5.
Value of Col8 should be in following logic.
public TableModel GetDerivedTable(ResultSet rs){
TableModel model = GetTable(rs); // I've done this
//Now have to modify here
If(Col2==true && Col5==true)
Then{Col8 = 1}
[Code] ....
I am using Swing, I have a JPanel and in it there is a JTextArea and a JButton. I want the JTextArea to move when the button is clicked on. I'm Not really sure how to do the action listener for the button. at the moment the JTextArea only moves once when the button is clicked on, but i want it to move every time the button is clicked on.
This is what i have so far:
moveButton = new JButton("MOVE");
moveButton.setName("move");
moveButton.setBounds(20, 140, 70, 40);
text = new JTextArea("hello");
text.setEditable(false);
text.setBounds(x, 50, 40, 20);
panel.add(moveButton);
panel.add(text);
In the actionPerformed method this is what it does:
text.setBounds(x + 50, 50, 40, 20);
panel.add(text);
text.setVisible(true);
How can i take run time value for static final variable...my lecturer said first time assignment is possible for declared final variable but in my case it shows compile time error..I'm placing my program below with error message
class Sample
{
static final String cname;
void print() {
System.out.println(cname);
}
public static void main(String args[])
{
cname=args[0];
Sample s=new Sample();
s.print();
}
}
Sample.java:11: cannot assign a value to final variable cname.
cname=args[0];
I'm working in a project where a particular part has been assigned to me. I've a ResultSet of informations like below:
EmpId EmpFirstName EmpLastName EmpAge 1 ABC DEF 43 2 PQR XYZ 37
Now I've to send this ResultSet(to another function) with EmpFullName in following manner.
EmpId EmpFirstName EmpLastName EmpFullName EmpAge 1 ABC DEF DEF, ABC 43 2 PQR XYZ XYZ, PQR 37
There is no permission for me that I can change SQL query(or anything like this), and I've to return the modified ResultSet(not TableModel). I googled a lot to implement AbstractResultSet, but no luck for me. How can I achieve this ?