1: /** * 继承主要解决的问题是:共性抽取。 * 继承关系当中的特点:1:子类可以拥有父类的“内容”; * 2:子类可以拥有自己专有的类容; *继承语法:public class 子类 extends 父类; * extends:继承的意思。 */ public class inheritance { public static void main(String[] args) { EmployeeSon son = new EmployeeSon();//建立一个子类对象 son.method();//EmployeeSon里面虽然什么都没有写,但是会继承父类的method()方法。 } } /** * super:就是父类,超类的意思。 * 局部变量: 直接写成员变量名。 * 本类的成员变量: this.成员变量名。 * 父类的成员变量: super.成员变量名。 */ class Employee{ int num = 100;//父类的成员变量。 public void method(){ System.out.println("方法执行"); } } class EmployeeSon extends Employee{ int num = 200;//本类的成员变量。 @Override//表示覆盖重写。 public void method(){ int num = 300;//局部变量。 System.out.println(num);//局部变量。 System.out.println(this.num);//本类的成员变量。 System.out.println(super.num);//父类的成员变量。 } }
2:一个继承的小案例。
/** * 继承父类,添加新的内容 * 覆盖方法的重写; */ public class inheritance002 { public static void main(String[] args){ NewPhone com = new NewPhone(); com.call(); com.send(); com.show(); } } //老手机的功能; class phone{ public void call(){ System.out.println("打电话"); } public void send(){ System.out.println("发短信"); } public void show(){ System.out.println("来电显示"); } } //更新,定义一个新手机,继承老手机功能,然后添加新功能; class NewPhone extends phone{ public void show(){ super.show();//把父类的方法拿过来; //添加自己的新功能。 System.out.println("显示姓名"); System.out.println("显示号码"); } }
3:继承关系中,父子类构造方法的访问特点。
/** * 继承关系中,父子类构造方法的访问特点; * 1:子类构造方法当中有一个默认的super();调用父类的构造函数。一定是先调用父类的构造函数,在调用子类的。 * 2:子类构造通过super关键字来调用父类重载构造。 * 3:super父类构造方法调用,必须是子类构造方法的第一个语句。不能一个子类构造方法调用多个super。 * 4:子类构造方法必须调用父类构造方法,super只能有一个,必须是第一个语句。不写默认送super(),写了就用指定的super调用。 */ public class inheritance003 { public static void main(String[] args) { zi mon = new zi(); } } class fu{ public fu(){ System.out.println("父类构造方法"); } public fu(int num){ System.out.println("父类有参构造方法"); } } //更新,定义一个新手机,继承老手机功能,然后添加新功能; class zi extends fu{ public zi(){ //super();默认调用父类构造方法; super(10);//对应那个父类构造函数就调用哪一个。 System.out.println("子类构造方法"); } }