此为学后的笔记:
继承是面向对象语法的三大特征之一,
继承可以降低代码编写的冗余度,提高变成的效率,通过继承,子类获得了父类的成员变量和方法。
一个子类是如何继承父类的字段和方法呢?到底逻辑如何?
我个人的理解如下:
继承:代表的是父子关系的延续,比如子承父业,就是父类的特征和行为(也可以看作是财富家产),使得子类对象具有父类相同的某些或全部方法和属性。
继承的作用:通过继承可以快速创建新的类,实现代码的重复使用,提高程序的可维护性,节省大量 创建新类的时间,提高开发效率和开发质量。(也就是父亲打下的江山,儿子可以直接拿过来用,省时省力可得一份江山)(也可以理解为可以把共同的特征和动作放在一个类里 让其他类进行共享)。
在java中,通过关键字extends来说明一个类是另一个类继承的关系,一般形式如下:
class Father{
...//成员变量 成员方法
}
class Son extends Father{// 子类 继承 父类
...//类体
}
例如:
父类:
public class Father {
int k ;
public Father(){
System.out.println("我是父类中的无参构造方法。。。");
}
public Father(int k){
this();//调用当前类的无参构造器
this.k =k;
System.out.println("我是父类的有参构造方法。。。");
}
public void fun(){
System.out.println("我是父类中的fun方法。。。");
}
}
子类1:
public class Son1 extends Father {
//构造方法名称和类名保持一致!!!!
public Son1(){
System.out.println("我是子类构造器。。。");
}
public static void main(String[] args) {
//创建一个对象:只要有继承关系,就会优先调用父类的无参构造方法
Son1 newSon = new Son1();
}
}
运行结果是:
子类2:
public class Son2 extends Father{
int k ;
//因为在继承关系中 子类调用自己的构造器时 优先调用父类的无参数构造器
public Son2(){
System.out.println("我是子类son2的无参构造器。。。");
}
public Son2(int k){
super(k);
System.out.println("我是子类2的有参构造方法。。。。");
}
public static void main(String[] args) {
System.out.println("==============================");
System.out.println("子类2中创建有参的对象:");
System.out.println("==============================");
Son2 son2 = new Son2(10);
System.out.println(son2.k);
System.out.println("==============================");
System.out.println("子类2中创建无参的对象:");
System.out.println("==============================");
Son2 son21 = new Son2();
System.out.println("==============================");
}
}
运行结果是:
继承的注意事项:
- 子类只能有一个父类,而父类可以有多个子类;
- 父类的构造方法不会被子类继承,但是可以从子类中调用父类的 构造方法;
- 如果说有继承关系情况下,那么一定是优先调用父类的无参构造器;
- java本身会为你隐式提供一个super(); super( int age); 意思是在调用父类的无参、有参构造器;
- super(); 调用的是父类的有参还是无参构造器,取决于super括号里面是否有参数;
- super(); 必须放在构造器的第一行,否则会报错;
- this();也必须放在构造器的第一行,所以super(); 和this();不能同时出现;
- this指的是本类,当前类;
- 有参构造器中如果写了this()调用无参数构造器 ,那么 无参数构造器中就不允许写有参调用方法,避免进入互相调用的死循环;必然报错!
- 调用有参数的构造器的时候,有参数构造器调用隐式的super();
以上为第一天 学完后的总结,后续会陆续更新总结,一起加油哦~~~~
有疑问欢迎随时留言交流沟通!