J抽象类继承问题

 1.抽象类也是类,只不过本身不能实例化,要通过子类实例化。

 2.是类就有构造方法,如果我们没有给出构造方法,系统将自动提供一个无参构造方法,如果我们给出了构造方法,系统将不会提供。
  那么问题来了,为什么非得有构造方法呢?
  构造方法的作用:(1)用于创建对象,初始化参数;(2)接受子类传来的参数,初始化参数,子类堆内存的某块位置存放父类的初始化参数;说白了就是初始化参数
  那么问题又来了,问题a:抽象类有构造方法怎么不能创建对象?问题b:它与接口又有什么关系呢?
  问题a:请看构造函数的作用,还要补充下,用抽象类就要写个继承它的子类,然后通过父类引用指向子类这也是多态的表现,Father f = new Son();引用地址f就可以调用抽象类中的一般方法;
  那么问题又来了抽象类怎么访问子类的方法呢?好了,自己考虑去
  对于抽象类和一般类,接口,来个形象的例子
  话说我去兰州拉面馆吃面,拿着菜单
  抽象类的说法:
  我:老板来碗面
  老板:你需要什么面?
  我:就是面啊?---------->描述抽象,既然抽象类都这么抽象了,那它有什么作用呢?简单来 说,就是抽取某个类的共性功能,方便分类调用(编程就需要逻辑思维清晰,可读性强,就像书为什么要目录);举个例子,假如有哥们想吃面,想吃辣点的(面的共性辣),就快速选个方向去四川面馆,到了面馆就有查渣面,鸡丝凉面(具体类)选择...
  
  类的说法:
  我:老板来碗面
  老板:你需要什么面?
  我:油泼面 ------------>描述具体

  接口:从广义的角度讲对外提供规则的都是接口,来个例子
  话说你家大门锁,你可以用匹配的钥匙打开锁,可我不一定非得要用你那型号的钥匙去开你家大门,我可以用铁丝就可以了,想想,实际生活中当真可以么,去问盗贼,他们"接口"倒是学的不赖
  为什么用铁丝也可以开门呢?因为实现了锁孔内几个顶针同时顶上然后什么什么的方法,现在我们来看,我们可以用钥匙这个对象可以开锁,用铁丝这个对象开锁,他们共同的特点就是实现了
  开锁的一些规则要求,也就是实现了开锁的要求的方法
  需要说明的是:接口是没有构造方法的,它只是用来对外提供规则,其他类都可以实现这个接口,重写里面的方法

  问题b:抽象类和接口的关系?
  一般类继承抽象类,extends
  一般类也可继承一般类 ----->类与类可以继承,单继承,儿子和父亲的关系(一个儿子不能来自两个父亲的基因,能吗?)
  
  一般类和抽象类可以实现一个或多个接口,implements--->....干儿子和干爹的关系
  那么问题来了:有没有人有个奇葩的问题,接口可不可以有父亲?干爹呢?
  ......收住,回到正题

  3.子类中所有的构造方法默认都会访问父类中空参构造方法-->为什么呢?
  因为子类会继承父类中的数据,可能还会使用父类的数据,
  所以,子类初始化之前,一定要先完成父类数据的初始化

  4.那么问题来了,要是父类没有无参构造呢?
  不会有人认为父类没构有造方法吧?。。。
  系统会默认加的(前面有提到),这里是指父类手动写了有参构造,子类继承也要手动写出构造方法(请看下面例子)

  5.继承的注意事项
  (1):子类只能继承父类所有非私有的成员(成员方法和成员变量)--->皇帝老儿的妃子,你太子能继承享用,恩...只代表大众的想法,特殊的除外,不钻牛角尖
  (2):子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值