Use of super keyword
Hi all , iam new to java . plz tell me what is use of super keyword
You might read the Managing Inheritance part of the Learning the Java Language tutorial.
Similar Messages
-
Hi all,
I have some questions on the use of super keyword.
1, Why super cannot be used to assign the super object to an instance in current object. I tried this
Class a
Class b extends a
in b
a var = super;
2, Is it possible to access the super class of a super class
a , b extends a, c extends b.
from c
super.super.getClass();
Antony Paul1) Because it's not really a separate object. You can do this in b:
a var = this;
Since b extends a, any object that is a b is also an a.
2) Yes, but not that way. You can't chain supers together.
Class thisClass = this.getClass(); // c
Class superClass = this.getClass().getSuperclass(); // b
Class superSuperClass = this.getClass().getSuperclass().getSuperclass(); // a
or
Class thisClass = this.getClass(); // c
Class superClass = thisClass.getSuperclass(); // b
Class superSuperClass = superClass.getSuperclass(); // a -
Using the Super Word in a tutorial
ive created two classes:
public class Polygon
int sides;
double area;
public Polygon()
System.out.println("Inside no-arg constructor");
public String NumberOfSides()
System.out.println("The Number of Sides = " + sides);
return sides;
public String toString()
System.out.println("Inside Polygon toString")
String rep = "Sides" + sides + "area" + area;
return rep;
public Polygon(int s)
sides = s;
System.out.println("Inside One-Arg Constructor");
public class Triangle extends Polygon
int base;
int height;
public Triangle(int b, int h)
base = b;
height = h;
The tutorial i am using says, 'Add a constructor to Triangle that takes in two int's for base and height. The constructor needs to use super() to invoke the constructor in Polygon, passing in 3 for the number of sides. Print out the message "Inside Triangle Constructor"
as you can see i've created the triangle constructor which takes in the two int's but i am unsure how to use the super keyword to use the constructor within the polygon class to pass in 3 as the number of sides.
can someone help me in solving this problem.
Thanks
Richard.if i was to change the order to that would it not
take the NumberOfSides() and the toString() methods
out of the no-argument constructor?You cannot put methods inside methods.
That makes no sense in Java.
i deliberately
put them there because i only want them for the
no-arg constructor. or must methods be seperate
entities from constructors?Yes.
And in fact, you have 2 more problems:
your "sides" and "area" variable are uninitialized
if people use your "no-arg" constructor,
so the compiler will complain.
You need to assign them some value in your constructor
(perhaps "slides=0; area=0;") -
How to reference a class without using the new keyword
I need to access some information from a class using the getter, but I don't want to use the new keyword because it will erase the information in the class. How can I reference the class without using the new keyword.
ContactInfo c = new ContactInfo(); // problem is here because it erases the info in the class
c.getFirstName();quedogf94 wrote:
I need to access some information from a class using the getter, but I don't want to use the new keyword because it will erase the information in the class. How can I reference the class without using the new keyword.
ContactInfo c = new ContactInfo(); // problem is here because it erases the info in the class
c.getFirstName();No.
Using new does not erase anything. There's nothing to erase. It's brand new. It creates a new instance, and whatever that constructor puts in there, is there. If you then change the contents of that instance, and you want to see them, you have to have maintained a reference to it somewhere, and access that instance's state through that reference.
As already stated, you seem to be confused between class and instance, at the very least.
Run this. Study the output carefully. Make sure you understand why you see what you do. Then, if you're still confused, try to rephrase your question in a way that makes some sense based on what you've observed.
(And not that accessing a class (static) member through a reference, like foo1.getNumFoos() is syntactically legal, but is bad form, since it looks like you're accessing an instance (non-static) member. I do it here just for demonstration purposes.)
public class Foo {
private static int numFoos; // class variable
private int x; // instance varaible
public Foo(int x) {
this.x = x;
numFoos++;
// class method
public static int getNumFoos() {
return numFoos;
// instance method
public int getX() {
return x;
public static void main (String[] args) {
System.out.println ("Foo.numFoos is " + Foo.getNumFoos ());
System.out.println ();
Foo foo1 = new Foo(42);
System.out.println ("Foo.numFoos is " + Foo.getNumFoos ());
System.out.println ("foo1.numFoos is " + foo1.getNumFoos ());
System.out.println ("foo1.x is " + foo1.getX ());
System.out.println ();
Foo foo2 = new Foo(666);
System.out.println ("Foo.numFoos is " + Foo.getNumFoos ());
System.out.println ("foo1.numFoos is " + foo1.getNumFoos ());
System.out.println ("foo1.x is " + foo1.getX ());
System.out.println ("foo2.numFoos is " + foo2.getNumFoos ());
System.out.println ("foo2.x is " + foo2.getX ());
System.out.println ();
} -
HT1338 how do i load windows 7 on a mac air using the super drive?
How do I load windows 7 on a Mac Air using the super drive?
You use Boot Camp to partition the SSD in the Air, download the Win 7 Support files from Apple (part of the boot camp process), save them to a USB thumb drive, have the USB superdrive connect to the Air with the Win 7 install DVD in the drive. Once partitioned the system will reboot and start the Win 7 install.
-
Use of 'ME' keyword in ABAP Objects?
Hi all,
Can any one please use of 'ME' keyword in ABAP Objects?
Thanks,
Vijay.
Moderator message: next time, please search for available information before asking.
Edited by: Thomas Zloch on Sep 16, 2010 5:33 PMHi,
Please find the description about the ME keyword as per the SAP documentation and help.sap.com.
Within the implementation of every instance method, an implicitly created local reference variable called me is available, which points to the instance in which the method is currently being executed. The static type of me is the class in which the instance method is implemented.
Each class implicitly contains the reference variable me. In objects, the reference variable mealways contains a reference to the respective object itself and is therefore also referred to as the self-reference. Within a class, you can use the self-reference me to access the individual class components:
-To access an attribute attr of your class: me->attr
-To call a method meth of your class: CALL METHOD me->meth
When you work with attributes of your own class in methods, you do not need to specify a reference variable. The self-reference me is implicitly set by the system. Self-references allow an object to give other objects a reference to it. You can also access attributes in methods from within an object even if they are obscured by local attributes of the method.
Regards,
Sagar -
I understand there is a way to use my Super Drive with my PC. However, it requires a System OS Disk. Which I never received. Can you help me with this?
Rick6812 wrote:
I'm using Windows 8.1.
I do not know what you mean by a Windows 8.1. Please clarify.
The Apple superdrive is designed to be used with the following Macs.
It will not work with any other Mac unless you perform this modification;
http://www.tuaw.com/2012/04/02/use-the-macbook-air-superdrive-with-any-almost-ma c/
Are you trying to get it to work with a PC?
Ciao. -
can anyone tell me where i can get a new or used sony super drive dwu10 678-0429b in the UK, for my flat panel i mac g4 model no m9168lla , or is there any other compatable drives i could fit
Try eBay. You do occasionally see that old model advertised there.
-
Use of final keyword on methods arguements ?
Hi All,
Just say I have an input arguement for a method which is an int. If I wanted to access the value stored by the input arguement reference inside an anonymous class that is contained in the method one way would be to pass the input arguement reference to a instance variable of the class that contains the method and use that.
// Declared at start of class
int arrayIndex = 0;
methodName(nt inputNumber)
arrayIndex = inputNumber;
ActionListener task = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
// Accessing here
anArray[arrayIndex] = 100;
}Just wondering, I used the final keyword on the the input arguement instead and then used the input arguement directly instead. It seemed to work ok. Is this good programming practice or are there some pitfalls to using this that I'm not aware of?
(I don't need to change what the input arguement reference points to)
// Alternate
methodName(final int inputNumber)
ActionListener task = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
// Accessing here
anArray[inputNumber)] = 100;
}Regards.declaring it final guarantees that you will not change the value.Of course it does. That's what it's for. That's what it means. But you're only guaranteeing that to yourself. It doesn't form part of the interface contract so it's no use to anybody else. Which is the bigger picture.
Whenever i use any anonymous classes i prefer to use the final variables as long as i dont need to change their values.No you don't 'prefer' it, you are forced to do that by the compiler. -
Use of const keyword in java ?
Hi All,,
I want to know the use of const keyword with proper example.
Many many thx in advance
Cheers
SouvikI want to know the use of const keyword with proper example.
There is no proper example, because const is not used in Java. If you want to create a constant, use the final keyword. -
Use of 'static' keyword in synchronized methods. Does it ease concurrency?
Friends,
I have a query regarding the use of 'synchronized' keyword in a programme. This is mainly to check if there's any difference in the use of 'static' keyword for synchronized methods. By default we cannot call two synchronized methods from a programme at the same time. For example, in 'Program1', I am calling two methods, 'display()' and 'update()' both of them are synchronized and the flow is first, 'display()' is called and only when display method exits, it calls the 'update()' method.
But, things seem different, when I added 'static' keyword for 'update()' method as can be seen from 'Program2'. Here, instead of waiting for 'display()' method to finish, 'update()' method is called during the execution of 'display()' method. You can check the output to see the difference.
Does it mean, 'static' keyword has anything to do with synchronizaton?
Appreciate your valuable comments.
1. Program1
public class SynchTest {
public synchronized void display() {
try {
System.out.println("start display:");
Thread.sleep(7000);
System.out.println("end display:");
} catch (InterruptedException e) {
e.printStackTrace();
public synchronized void update() {
try {
System.out.println("start update:");
Thread.sleep(2000);
System.out.println("end update:");
} catch (InterruptedException e) {
e.printStackTrace();
public static void main(String[] args) {
System.out.println("Synchronized methods test:");
final SynchTest synchtest = new SynchTest();
new Thread(new Runnable() {
public void run() {
synchtest.display();
}).start();
new Thread(new Runnable() {
public void run() {
synchtest.update();
}).start();
Output:
Synchronized methods test:
start display:
end display:
start update:
end update:
2. Program2
package camel.java.thread;
public class SynchTest {
public synchronized void display() {
try {
System.out.println("start display:");
Thread.sleep(7000);
System.out.println("end display:");
} catch (InterruptedException e) {
e.printStackTrace();
public static synchronized void update() {
try {
System.out.println("start update:");
Thread.sleep(2000);
System.out.println("end update:");
} catch (InterruptedException e) {
e.printStackTrace();
public static void main(String[] args) {
System.out.println("Synchronized methods test:");
final SynchTest synchtest = new SynchTest();
new Thread(new Runnable() {
public void run() {
synchtest.display();
}).start();
new Thread(new Runnable() {
public void run() {
synchtest.update();
}).start();
Output:
Synchronized methods test:
start display:
start update:end update:
end display:the synchronized method obtain the lock from the current instance while static synchronized method obtain the lock from the class
Below is some code for u to have better understanding
package facado.collab;
public class TestSync {
public synchronized void add() {
System.out.println("TestSync.add()");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("TestSync.add() - end");
public synchronized void update() {
System.out.println("TestSync.update()");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("TestSync.update() - end");
public static synchronized void staticAdd() {
System.out.println("TestSync.staticAdd()");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("TestSync.staticAdd() - end");
public static synchronized void staticUpdate() {
System.out.println("TestSync.staticUpdate()");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("TestSync.staticUpdate() - end");
public static void main(String[] args) {
final TestSync sync1 = new TestSync();
final TestSync sync2 = new TestSync();
new Thread(new Runnable(){
public void run() {
sync1.add();
}).start();
new Thread(new Runnable(){
public void run() {
sync2.update();
}).start();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
new Thread(new Runnable(){
public void run() {
sync1.staticAdd();
}).start();
new Thread(new Runnable(){
public void run() {
sync2.staticUpdate();
}).start();
} -
Use of "super" key word in abap oops...
Hi,
Can any one explain me what is the use of ' super ' key word in abap oops. excluding super class.
With Regards,
M.S.Amirtharaj Vijay.Vijay,
please read the sap documentation or f1 help
Thanks
Bala Duvvuri -
How to use knowledge base keywords"?
I have found links to the the knowledge base document "how to use knowledge base keywords" online but all the links lead to a dead end. The document number is 75178, and explains the use of prefixes in the knowledge base keyword search. Has anyone any info on where this page is or if it still exists?
Thanks
NadyaApparently, the document's no longer available.
-
Use VB Set keyword with Clone method?
I am using the TestStand API with Visual Basic 6.0 SP5. Is is necessary to use the Set keyword when calling the Clone method of a PropertyObject? i.e. which is correct:
Set thePropObj = existingPropObj.Clone("", 0)
or
thePropObj = existingPropObj.Clone("", 0)
Seems the Set keyword would be required, but I am
running into funny problems with this. I have a step
that I am trying to create a copy of. (The step contains a call to a LabVIEW VI.) If I omit the Set keyword, execution hangs at the call to Clone. If I include the Set keyword, all information present in the original PropertyObject doesn't seem to get copied to the new one. (Also, oddly enough, if I omit the set keyword, and the step calls a CVI function, everything seems to work
fine!)
Anyone have any advice?
Thanks in advance
D. LaFosseHello LaFosse,
You need to use the Set keyword before the clone method statement. However, I have a couple of comments about the code you sent.
This is the code you sent:
' Start up the testStand engine
Dim theTS As TS.Engine
Set theTS = New TS.Engine
' OK, load in the sequence file I
' created. This sequence file
' contains nothing more than a call
' to a VI in the main stepgroup of
' the MainSequence.
Dim seqFile As SequenceFile
Set seqFile =
theTS.GetSequenceFile()
' get a handle to the MainSequence
Dim seq As Sequence
Set seq = seqFile.GetSequenceByName
("MainSequence")
' Get a handle to the step that calls
' the VI, and a property object for
' the step
Dim theStep As Step
Set theStep =
seq.GetStep(0, StepGroup_Main)
Dim theStepProp As PropertyObject
Set theStepProp =
theStep.AsPropertyObject
' Create another step. We will attempt
' to use Clone to fill in the
' properties of this step.
Dim theOtherStep As Step
Dim theOtherStepProp As PropertyObject
Set theOtherStep = theTS.NewStep("",
TS.StepType_Action)
Set theOtherStepProp =
theOtherStep.AsPropertyObject
' Call clone...this step will hang.
theOtherStepProp =
theStepProp.Clone("", 0)
Basically the problem is that you are not loading the TypePallete after creating the engine. You shoud include right after the Set theTS = New TS.Engine:
theTS.LoadTypePaletteFiles
This should avoid the crash.
Some Additional comments:
1. With VB you don't need to create property objects from other objects. All the classes, except the Engine Class, inherit from the Property Object Class. The following Code does the same thing, but without creating propertyobjects directly:
Sub MySub()
'Variable Declaration
Dim theTS As TS.Engine
Dim seqFile As SequenceFile
Dim seq As Sequence
Dim theStep As Step
Dim theOtherStep As Step
'Create the Engine
Set theTS = New TS.Engine
'Load the Types
theTS.LoadTypePaletteFiles
'Get Sequence File
Set seqFile = theTS.GetSequenceFile()
'Get Sequence
Set seq = seqFile.GetSequenceByName("MainSequence")
'Get Step
Set theStep = seq.GetStep(0, StepGroup_Main)
'Clone the Step
Set theOtherStep = theStep.Clone("", 0)
'Using the inheritance functionality
'gets the Step Status
'Notice that theOtherStep is not a PropertyObject
'and you can use all the properties and methods that
'applies to the PropertyObject Class to a Step class
'in this example
'Also, in VB when you are typing the statement, you
'will not see the PropertyObject Class properties and
'and Methods automatically if the variable is not a
'PropertyObject type. However, you can still use them
'as mentioned before
MsgBox (theOtherStep.GetValString("Result.Status", 0))
End Sub
2. When you create or modify sequence files programatically be carefull not to break the license Agreement. You need the development lisence when modifying sequences.
3. This piece of code is not completed, and you will need to shutdown the engine by the end.
4. Since you are not handling UI Messages, you will need to be carefull when loading sequences that have the SequenceFileLoad Callback. The engine posts UI Messages when executing this callback. Also when you shutdown the engine, UI Messages are posted. For both operations (Load Sequence and Shuutdown) you may prevent the engine from posting the message (You may check the options parameter for this two methods in TS Programmer Help.)
5. If you want to run a sequence, again you will need to incorporate in your code the UIMessage Handler part. (You may check the TS Programmer Help->Writing an Application Using the API->UI Messages). Otherwise it may hang since the engine posts UI Messages eventually.
Regards,
Roberto Piacentini
National Instruments
Applications Engineer
www.ni.com/support -
'super' keyword problem....
hi everyone,
I had this starnge problem with super keyword,it gives me this compile error "Error(1042,11): method insertString(int, java.lang.String, javax.print.attribute.AttributeSet) not found in class javax.swing.text.PlainDocument"
hope any one could help
thanx
Code:
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
import javax.print.attribute.AttributeSet;
class myDocPattern extends PlainDocument
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
String oldText = this.getText(0,this.getLength());
if (str.length() > 2 || "0123456789.".indexOf(str) < 0 || (str.equals(".") && offs <= 0) ||
(oldText.length() > 3 && (oldText+str).indexOf(".") <= 1) || (oldText+str).length() > 7)
java.awt.Toolkit.getDefaultToolkit().beep();
return;
super.insertString(offs, str, a);
}I had this starnge problem with super keyword,it gives me this
compile error "Error(1042,11): method insertString(int, java.lang.String,
javax.print.attribute.AttributeSet)
not found in class javax.swing.text.PlainDocument"
> super.insertString(offs, str, a);Repeating what the compiler already told you: the superclass PlainDocument
doesn't have a method named 'insertString' with a
javax.print.attribute.AttributeSet type parameter; the last parameter type
needs to be a javax.swing.text.AttributeSet. (identical class names in
different packages).
kind regards,
Jos
Maybe you are looking for
-
i cannot find anywhere on the itunes store that i can purchase software for my old 1st gen touch, its driving me round the bend help!!
-
[SOLVED] ADF BC : event mechanism
hi I'm not sure what I am looking for, but I was wondering if ADF BC had some kind of "event mechanism" to "notify the view of changes in the model"? For example, what if I would like to be "notified" (in my view implementation), if a change to some
-
Does anybody know why the jar file I created for my project does not include the libraries included for my project, even thought I have checked the export checkbox?
-
Performing ldapsearch filtered by non-string value
Hi all. I'm using OID as my central users repository. I know how to perform ldapsearches with filters like (cn=*) and (objectclass=*) In OID there is an attribute of type binary called orclobjectsid. When I'm trying to perform search with filter (orc
-
Eurotherm 2416 control problems!
Hello I read a post that was make up for the forum NI on 06/06/2003 in which speak of some of the drivers that had MODBUS and they were too big to post in the forum. The user is "mikeporter", I hope he or someone who read this message can help me and