Java中的三大特性之一:继承(一)

此为学后的笔记:

继承是面向对象语法的三大特征之一,

继承可以降低代码编写的冗余度,提高变成的效率,通过继承,子类获得了父类的成员变量和方法。

一个子类是如何继承父类的字段和方法呢?到底逻辑如何?

我个人的理解如下:

继承:代表的是父子关系的延续,比如子承父业,就是父类的特征和行为(也可以看作是财富家产),使得子类对象具有父类相同的某些或全部方法和属性。

继承的作用:通过继承可以快速创建新的类,实现代码的重复使用,提高程序的可维护性,节省大量 创建新类的时间,提高开发效率和开发质量。(也就是父亲打下的江山,儿子可以直接拿过来用,省时省力可得一份江山)(也可以理解为可以把共同的特征和动作放在一个类里 让其他类进行共享)。

在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();

以上为第一天 学完后的总结,后续会陆续更新总结,一起加油哦~~~~

有疑问欢迎随时留言交流沟通!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值