error en Protected, las sub clases si pueden acceder a los método o atributos con este modificador además de las clases que esten dentro del mismo paquete.
Si y no. Con protected para una Subclase nos permite es acceder al atributo heredado extends desde el ámbito de la clase hija y no directamente. En otras palabras, heredado, no instanciado.
;?
¿Para que se utiliza?
Esa funcion llama al constructor de la clase padre, siempre se agrega porque por defecto siempre se deberia llamar.
La llamada al metodo super hace que se llame tambien los constructures de las clases de las cuales hereda, luego, si el contructor padre tiene una cierta inicialización de datos este lo llamarás, si tu quieres saltarte esto solo no llama al metodo super()
Curioso que mi IDE al crear el constructor NO llama al método “super()” como lo muestra el IDE del video.
Esto es hecho con IntelliJ, la imagen lo muestra (aun no encuentro como subir imagenes, será el browser? )
No te preocupes a veces no aparece explicitamente, pero sí lo utiliza 😃
Si quieres subir imagenes arrastrandolas al area de comentario, usa google chrome, si usar firefox no funciona.
Una observacion, la maestra menciona que con los modificadores de acceso default y protected se puede acceder desde clases en otro package, cuando mas bien es en clases que estan en el mismo package, sino no tendria sentido.
Modificadores de accesos:
En el constructor siempre debo usar el comando Super(); ??
No puedo hacer un constructor sin el comando?
El comando super solo referencia al mismo metodo de la clase padre. En el caso del constructor suele deberse a que todo hereda de Object, no es obligatorio ponerlo.
Gracias Javier por la aclaracion! 👍🏽
Me Gusta el Encapsulamiento…!!
Por que Eclipse genera un metodo super();? En el IDE de Netbeans y el IntelliJ IDEA no generan los constructores con esa variante del metodo super();
Son características de cada IDE, el método super() asegura que siempre heredes todo lo que tiene el método en su clase padre.
Simple, indica que está heredando de la super clase que
implementa
private, default, protected, public en orden de accesibilidad por otros clases, packages y subClases
Main.java
package com.platzi.amazonviewer;import java.util.Date;import java.util.Scanner;import com.platzi.amazonviewer.model.Movie;publicclassMain{publicstaticvoidmain(String[] args){Movie movie =newMovie("Coco","Animated",(short)2017); movie.showData();//showMenu();}publicstaticvoidshowMenu(){Scanner sc =newScanner(System.in); boolean exit =false;do{System.out.println("*** BIENVENIDOS AMAZON VIEWER ***\n");System.out.print("1. Movies\n2. Series\n3. Chapters\n4. Books\n5. Magazines\n6. Report\n7. Report Today\n0. Exit\nSelecciona el número de la opción deseada: "); int opcion = sc.nextInt();if(opcion ==0){System.out.println("Saliendo..."); exit =true;}elseif(opcion ==1){showMovies();}elseif(opcion ==2){showSeries();}elseif(opcion ==3){showChapters();}elseif(opcion ==4){showBooks();}elseif(opcion ==5){showMagazines();}elseif(opcion ==6){makeReport();}elseif(opcion ==7){makeReport(newDate());}else{System.out.println("OPCIÓN INVÁLIDA!");}System.out.println();}while(!exit); sc.close();}publicstaticvoidshowMovies(){System.out.println("\n:: MOVIES ::");}publicstaticvoidshowSeries(){System.out.println("\n:: SERIES ::");}publicstaticvoidshowChapters(){System.out.println("\n:: CHAPTERS ::");}publicstaticvoidshowBooks(){System.out.println("\n:: BOOKS ::");}publicstaticvoidshowMagazines(){System.out.println("\n:: MAGAZINES ::");}publicstaticvoidmakeReport(){}publicstaticvoidmakeReport(Date date){}}
Movie.java
package com.platzi.amazonviewer.model;publicclassMovie{public int id;privateString title;privateString genre;privateString creator;private int duration;private short year;private boolean viewed;private int timeViewed;publicMovie(String title,String genre, short year){super();this.title= title;this.genre= genre;this.year= year;}publicMovie(String title,String genre,String creator, int duration, short year){super();this.title= title;this.genre= genre;this.creator= creator;this.duration= duration;this.year= year;}publicvoidshowData(){System.out.println("Title: "+this.title+"\nGenre: "+this.genre+"\nYear: "+this.year);}}
Serie.java
package com.platzi.amazonviewer.model;publicclassSerie{private int id;privateString title;privateString genre;privateString creator;private int duration;private short year;private boolean viewed;private int timeViewed;private int seasonQuantity;//chapters[]publicSerie(String title,String genre, int duration){super();this.title= title;this.genre= genre;this.duration= duration;}}
Chapter.java
package com.platzi.amazonviewer.model;publicclassChapter{private int id;privateString title;private int duration;private short year;private boolean viewed;private int timeViewed;private int seasonNumber;publicChapter(String title, int duration, short year){super();this.title= title;this.duration= duration;this.year= year;}}
package com.xpsmart.amazonviewer;// Paquete que contiene la clase para trabajar con datos de tipo fechaimport java.util.Date;// Paquete que contiene la clase para leer datos de entrada (teclado) desde la consolaimport java.util.Scanner;// Paquete que contiene la clase para trabajar con Moviesimport com.xpsmart.amazonviewer.model.Movie;publicclassMain{// Crear un atributo de tipo Scanner para leer información desde teclado por consola// Es estatico debido a que se emplea dentro de un metodo con la misma naturalezaprivatestaticScanner lector;/*
* El metodo principal es estatico por diseño del lenguaje, y se debe a que en el momento de iniciar nuestra aplicación
* no existen objetos en memoria, es a partir de este metodo que se comienzan a crear los objetos para poder interactuar con ellos
* dentro de la aplicación
*/publicstaticvoidmain(String[] args){// Crear un objeto de tipo Movie, e inicializar su estadoMovie movie =newMovie("Coco Loco","Animation",(short)2017);// Acceder al metodo showData el objeto movie movie.showData();// El método principal solo puede invovar métodos estáticosshowMenu();}/*
* Los métodos estaticos se pueden usar en toda la clase que los conteine
* Los métodos estaticos pueden ser invocados por otras clases
* No requieren ser instanciados (no se necesita de un objeto para acceder a ellos)
*
* // Acceso foráneao
* Clase.metodoEstatico(params)
* Clase.atributoEstatico
*
* // Acceso local
* metodoEstatico(params)
*
* Los métodos estaticos ayudan a ahorrar memoria ya que no se necesita crear objetos para poder acceder a ellos
* Lo mismo pasa para atributos estáticos
*
* Tambien son considerados como métodos o atributos de clase
* Se emplean para comunicar información entre clases, ya que si una clase A
* modifica el valor de un atributo estatico, para todas las clases B/C/D que lo emplean
* ese valor se actualiza
* */publicstaticvoidshowMenu(){ short opcion =0;do{System.out.println("BIENVENIDOS A AMAZON VIEWER");System.out.println();System.out.println("1. Movies");System.out.println("2. Series");System.out.println("3. Books");System.out.println("4. Magazines");System.out.println("5. Report");System.out.println("6. Report Today");System.out.println("0. Exit"); lector =newScanner(System.in);System.out.println("Ingrese una opción válida"); opcion = lector.nextShort();switch(opcion){case0:System.out.println();System.out.println("Gracias, cerrando sistema");System.out.println();break;case1:showMovies();break;case2:showSeries();break;case3:showBooks();break;case4:showMagazines();break;case5:makeReport();break;case6:// Date miFecha = new Date();// No hay necesidad de crear un objeto que no se utilizará mas en el programa// para ello generamos uno de manera implicitamakeReport(newDate());break;default:System.out.println();System.out.println("Opcion incorrecta");System.out.println();}}while(opcion !=0);}/**
* La firma de un metodo contiene las siguientes partes
* modificador de acceso: public, protected, private
* tipo metodo: instancia / clase / final
* valor de retorno: void, int, String, float, etc
* nombre del método: metodo(), miMetodo()
* parametros: metodo(int param, String param)
*
*/publicstaticvoidshowBooks(){System.out.println();System.out.println(":: BOOKS ::");System.out.println();}publicstaticvoidshowMagazines(){System.out.println();System.out.println(":: MAGAZINES ::");System.out.println();}publicstaticvoidshowChapters(){System.out.println();System.out.println(":: CHAPTERS ::");System.out.println();}publicstaticvoidshowSeries(){System.out.println();System.out.println(":: SERIES ::");System.out.println();}publicstaticvoidshowMovies(){System.out.println();System.out.println(":: MOVIES ::");System.out.println();}/**
* Sobrecarga de metodos
* Se da cuando tenemos mas de un metodo con el mismo nombre pero con diferente firma en sus parametros
* 1 Por orden de sus parametros
* 2 Por la cantidad de parametros
* 3 Por el tipo de dato en sus parametros
*
* En este caso la sobrecarga nos viene perfecto para crear un metodo que se encargue de generar reportes
* uno de ellos para reportes generales y el otro para reportes basados en una fecha determinada
*/publicstaticvoidmakeReport(){}publicstaticvoidmakeReport(Date date){}}
Buenas noches estimados. Tengo una pregunta según lo que he visto, en cualquier desarrollo que se haga con Java,¿ siempre sera mejor declarar los métodos y variables en "static"?
No necesaria mente, depende del uso del atributo o el metodo. Durante el curso me di cuenta de que cuando declaramos con static es possible acceder a el valor de esa variable o ejecutar el metodo sin la necesidad de crear un objeto para luego ser usado. Ejemplo:
en la clase Movie, creamos el metodo makeMoviesList() como static y asi luego pudimos acceder a ese metodo directamente y no a través de un objeto de tipo Movie. Solo tuvimos que escribir Movie.makeMovieList().
Por que un constructor se crea con super() ?
Para invocar al constructor de la Clase padre en Java.
super() hace referencia a los atrubutos de la clase padre. Por ejemplo:
classPadre{privateString lastName;publicPadre(String lastName){this.name= name;//referenciando al lastName del padre}//Getters y Setters}classHijoextendsPadre{privateString nameSon;publicHijo(String nameSon,String lastName){super(lastName);this.nameSon= nameSon;}}
A que le llamamos otros en la tabla que presenta Ann?
Otras clases en otros paquetes o vía reflection
Como puedo hacer esto en NetBeans?
Que cosa?
El insertar constructores tambien esta disponible en netbeans y es de una forma muy similar (con click contrario). o a que parte hace referencia???
Explicación de los modificadores de Acceso
En Eclipse utiliza el atajo "Alt + Shift + A" para realizar una selección multilíneas y editar varias líneas rápidamente.