package class_JC; public class aFu { //父类对象不可引用子类对象的构造方法 //子类可以访问父类对象的一个构造方法(无论有参(记得传入参数)无参都可以访问) int num1=234; public aFu(){ System.out.println("无参构造方法"); } public aFu(int num2){ System.out.println("有参构造方法传入了num2:"+num2); } public void cs(){ System.out.println("Fu的num1:"+this.num1); } }
package class_JC; //当有继承时构造方法中自动有super(自动赠送) //super方法:①子类调用父类的属性(super.父类的属性名) // ②子类调用父类的方法(在子类的方法中用super.父类的方法名) // ③子类调用父类的构造方法(在子类的构造方法中直接super(),(切记在子类的第一行调用,只可调用一次……)) //构造方法中super和this不可以同时使用 //this方法:①同类中调用本类的属性(this.属性名) // ②同类中访问本类的方法(this.本类的方法名) // ③同类中构造方法(无参)访问本类中的构造方法(有参)时(this.(传入的参数,[传入的参数])) public class aZi extends aFu { private int num1=1203; public aZi() { // super();切记:只可引用一次构造方法(无论有参,无参) super(10);//传入Fu类有参构造方法中 System.out.println("Zi无参构造方法" + num1); // super();必须在构造方法的第一句 } public aZi(int num2){//有传入实参就可以创建构造方法 } // public aZi(){}切记:在main中引用了该类就不可以构造多个构造方法没有实参的方法(否则会出现问题) public void sc(){ int num1=24; System.out.println(num1);//24 System.out.println(this.num1);//1203 System.out.println(super.num1);//234 } // public void cs(){ // System.out.println(this.num1); // } }
package class_JC; public class super_this_zj { //局部引用属性时直接引用属性名; //同类引用属性时用this.属性名;(@override可以检测方法是否重写和导入的参数组是否相同) //父类引用属性时用super.属性名;(@overrlin) public static void main(String[] args) { aZi zi = new aZi();//创建对象时记得看看类中的构造方法的个数 aFu fu = new aFu(); fu.cs(); zi.sc(); //重写:名字一样,导入的参数列表一样 //返回值必须比父类的返回值小于等于 //子类的权限必须大于等于父类的权限(default就是直接定义属性类型和属性名) // 例:(public> protected> (default) > private) // public void ff(){} , ,int num1, //重载:名字一样,导入的参数列表不一样(传入的参数会自动走向符合它参数类型的方法) //谁的数据类型符合传入的方法名的类型就调用哪个方法(具有自动择选性) //同方法名的传入参数不可以同类型 //同方法名多个参数时,参数的顺序不可以相同 //同方法名时 zi.cs();//当有重名方法时new谁就优先使用谁的方法,没有则往父类找,父类不可以在子类找 } }