类的继承
一、基本知识点
1、Java继承关键字与格式
Java继承的关键字:extends
格式:
pubilc class 类名(子类,派生类,超类) extends 类名(父类,基类)
Java中的继承都是单继承
eg:public class A extends B,C(No!!)
2、子类继承到了父类的哪些属性与方法?能调用哪些方法与属性有哪些?
子类继承了父类的所有属性和方法。
能调用的:
类中 同包中 有继承关系不同包中 不同包
public 可以 可以 可以 可以
protected 可以 可以 可以 不可以
private 可以 不可以 不可以 不可以
默认的 可以 可以 不可以 不可以
3、方法重写
(1)访问修饰符,返回值类型,方法名,参数个数类型顺序都必须要相同。
(2)具体的实现不同(既{}里面的内容)
4、自动转型
用父类名来表示子类
eg:father f=new sun();
6、多态性
多态性是由java的方法重载,继承,方法重写,自动转型等技术点的组合。
二、写代码时遇到的问题。
1、父类写有构造方法的时候,子类也一定要写构造方法。并且利用super方法调用父类的构造方法。
eg:public class Automation extends WashingMachine {
//构造方法
public Automation(int size ,String color, float price, String brand) {
//调用父类的构造方法
super(size, color, price, brand);
}
2、自动转型的运用场合
用父类来表示子类,可以减少代码的重复量。
如:
洗衣服,衣服的总类有很多:外套,袜子,裙子 。。。。如果不用自动转型的话,我们想写这个人在洗外套,则会写成:
public void wash(Coat coat){
System.out.println(brand+type+"的"+"洗衣机只需要放入"+coat.getName ()+"!");
如果每种衣服类型都写一种的话,则需要写很多个这样的重复代码。
为了减少代码的重复量可以使用自动转型(向上转型)。
public void wash(Clothes clo){
System.out.println(brand+type+"的"+"洗衣机只需要放入"+clo.getName ()+"!");
public class Coat extends Clothes {
}
Coat coat = new Coat();
coat.setName("外套");
auto.wash(coat);
这样在调用wash方法的时候,coat自动转型为父类clothes,大大的减少了代码的数量。