Encapsulation - Protected Attributes Should Be Visible To Child Classes
Jun 7, 2013
I found the following inheritance and encapsulation issue . Suppose you have a parent class with a non-static protected attribute.
package package1;
public class Parent{
protected int a = 10; // this is the non-static protected attribute in question
public static void main(String args[]){
// whatever logic
}// end Parent class
}// end main()
Now suppose you have a child class in another package and you have imported in the parent class.
package package2;
import package1.Parent;
public class Child extends Parent{
public static void main(String[] args){
Parent p = new Parent();
Child c = new Child();
System.out.println(p.a); //should print out 10 BUT DOES NOT
System.out.println(c.a); //should print out 10
}// end main()
}// end Child class
My observation is that p.a produces an error even though, to the best of my knowledge, it should not. I believe the statement "System.out.println(p.a);" should print out a 10.
Am I misunderstanding something about inheritance and encapsulation?
I am new to Java and I am doing an assignment to identify Class and Attributes from below example. How to identify 7 classes and its attributes from this scenario:
ABC Maps Maker produces electronic maps for global positioning systems. Every map needs to define the latitude and longitude of the centre of the map, together with the length and breadth of the map. A map also has a name, and a set of geographical features.
A geographical feature is something noticeable in a a map; e.g., a hill, or valley. Among the types of features are the following: trace features, track features and tract features.
All features have a name that is displayed on the map next to the feature. A trace feature has a coordinate point to indicate its location relative to the centre of the map. Broadcasting stations, mountain peaks, and transmission towers, are examples of trace features. Every trace feature has a description associated with it.
Examples of track features include roads, railways and rivers. Each track feature has a list of points that define its course, and a line pattern. The line pattern specifies the colour, and the thickness.
Like a track feature, a tract feature also has set of points, except that when drawn on the map, the last point is linked to the first point to enclose a complete region. Additionally, it has a fill pattern which incorporates essentially a colour.
Recall that there is a class, Point, in the java.awt package – this can be used to hold the co-ordinate of a point
I have been working on a simple problem, but I am stuck. I am trying to learn parent and child classes and how they work. The program in broken into three classes; the DemoBook class that runs the various methods, the Book class that gathers information and displays it, and finally a child class of Book (called TextBook) that just gets one piece of data and then is suppossed to return that data back to Book. However, this is not working and I know I am missing something; I believe it has to do with Set and Get methods, but I am confused with how these work.
Java Code:
public class DemoBook { public static void main (String[] args) { Book aBook = new Book(); Textbook aText = new Textbook();
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 understand making things private and using getters and setters to prevent corrupt data/valdiation. I am having trouble picturing a scenario where I can change my code without breaking others. What can I change without breaking existing code? One example I can think of is I can change an instance variable name since the getter for it will return it regardless. I am looking for a more vivid example...
I just recently started learning about encapsulation, how to set variables private and only accessible to other classes through setters() and getters(). I've seen a couple of programming examples, perhaps not enough but some from here, and I sort of built the assumption that by default all variables need to be private. to make things more clear, here's a card dealer I made which simply
1- generates a fulll deck of 52 cards 2- lets user decide how many players, with 5 as Max number allowed as each player is dealt 10 cards. 3- deal cards
I approached this by making A deck , card , player and game class
import java.util.ArrayList; public class Deck { //an Object of this Class would generate a full deck ie an ArrayList of 52 Cards private String[] suits={"Spades","Diamond","Clubs","Hearts"}; private int[] number={1,2,3,4,5,6,7,8,9,10,11,12,13}; ArrayList<Cards> deck= new ArrayList<Cards>();
[code]....
I can understand why for example Deck class's suit and number arrays are set to private , as they only need to be accessed by this class only. however, both the Deck class's deck arraylist and the Player class arraylist are not private, as I need to transfer these values from one to the other and it felt to me that setting them to private would make it more difficult to deal with them, but what I did instead is to set the Game class dealCard(), which is the only method that have access to them as private. does this achieve the same effect or do I need to set both of these arrayList to private?a follow up question, this is more related to the actual card dealer program, in this code
private void dealCards(){
for(int x = 0 ; x < playerCount ; x++){ for(int y = 0 ; y < 10; y++){ playerList.get(x).pile.add(deck.deck.get(0)); deck.deck.remove(0); } } }
is there an API in ArrayList class that moves(adds to receiver and remove from giver) element across ArrayLists?
As below code showing that you cannot directly access the private variable as i understood,
public class EncapsulationDemo{ private int ssn; private String empName; private int empAge; //Getter and Setter methods public int getEmpSSN(){ return ssn; } public String getEmpName(){ return empName;
I have my code in 3 different files using encapsulation (Data hiding) and i have 1 problem at the very end of my code in my if and else statement (very bottom) when trying to call the classes from the other 2 documents. I will put the code in 1st document to 3rd document.
// FIRST DOCUMENT public class CollegeCourse { //class name //variables String deptName; int courseNum; int credits = 3; double fee;
[Code] ....
UPDATE: error message is
UseCourse.java:24: error: cannot find symbol LabCourse lc = new LabCourse(department, course, Credits); ^ symbol: variable department location: class UseCourse UseCourse.java:24: error: cannot find symbol LabCourse lc = new LabCourse(department, course, Credits);
I was just wondering.. my understanding from everywhere I have read is interface cannot be private or protected (not at the top level) but when we declare an interface without any modifier it is default.
We know default modifier has more restricted access than protected.. public > protected > default > private
Now since an interface can be public and default then why not protected as clearly if they were allowed to be protected they could be implemented by a subclass..?
While typing this question I figured how would an interface know which is it's subclass? that is why Java allows only public i.e. any class can implement it or default i.e. any class within the package can implement.. am I right?
Why is it that a protected method cannot be accessed polymorphically outside its package. I suspect the reason is that some compile-time checks have to be performed. Is this correct?
I don't know why class Object have two PROTECTED method -- clone() and finalize(). And in JUnit's source code, I notice that kent write :public class AClass extends Object {}I really don't understand what diffrient frompublic class AClass {}
how access levels work from subclasses and other packages, and I have discovered that a class cannot see it's own protected variable from another package which I thought it would be. I know that it says in the java docs "The protected modifier specifies that the member can only be accessed within its own package (as with package-private) and, in addition, by a subclass of its class in another package." but I thought that would also include it's own class.
Java Code:
package food; import food.fruit.*; public class Food { protected int protecte = 5; private int privat = 5; protected void method(){
Jun 16, 2014 6:21:33 PM practice.TestFTPProgram main SEVERE: null java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
With Apache POI it is possible to password protect an excel file. PFB for the code. But it is working with XLSX extension [2010 Excel format], But not with XLS [2003 Excel format].how to accomplish the same
How to read Password protected Excel file using java. Actually i read normal excel file(without password protection) successfully, using some standard codings with support POI jars. But i am unable to read password protected xls file.
I am trying to declare fields as protected String custom.field.1096; in my java class but it does not allow me. Can I not declare the field as above? Is there any workaround to achieve this?
I have a problem with several java applications. When I start them Java wants to connect to the certificate authority, to check if the certificate is still valid and not on a blacklist.
The problem is: my whole internet is behind a password protected proxy. If I open my browser i get a windows with username and password. I enter it and internet in the browser works. But for Java it isn't working, because I see no point, where I can enter the password and username for the proxy. I can enter the proxy ip and port in the java settings, but not the password and username. So I get a error screen from java, telling me, that java could not connect. I can disable the check in the java settings, but I don't wont that.
Is there a way to tell java, that java uses my proxy with my password and username? I already googled this problem and found nothing except tutorials for connecting with proxy in the java code. But these applications are not from me, I can't change the code ...
I'm having an issue when I try to define a variable in a JSP scriptlet, and then in a separate scriptlet on the same page attempt to use the variable. It looks like it goes out of scope.
I also cannot reference a variable from a servlet in a JSP expression tag. So I've had to write the entire page basically in one scriptlet.
JFileChooser fileChooser = new JFileChooser(); fileChooser.setCurrentDirectory(new File(currentDirectory));
File f = new File(currentDirectory); ArrayList<String> names = new ArrayList<>(Arrays.asList(f.list())); for (String s : names) if (s.startsWith(yearofIssueTXT.getText())) { fileChooser.setSelectedFile(new File(s));
int result = fileChooser.showOpenDialog(addNewCoinBody);
The file is not visible because it is at almost the end of the files in the directory. I want the filechooser to automatically scroll so that the file is seen in the list.
I' currently wrking on BeatBox application from Head First Java. I made a jpanel the pane of the frame & when i try to add a JMenuBar object to that it is not getting displayed when i run the code. When i add a menuBar directly to the JFrame object it is visible & working fine but not incase when added to JPanel.