1.继承:
继承主要是子类继承父类。由关键词extends来表达。已存在的类称为父类,新建的类称为子类
2.方法的覆盖
父类一个echo方法,子类里也需要声明一个echo方法,称为方法的覆盖(@Override)
3.关键词super
我们可以通过super实现对父类构造器的调用。使用super调用构造器的语句必须是子类构造器的第一条语句
4.构造器注意
如果子类的构造器没有显示的调用父类的构造器,则将自动的调用超累默认(没有参数)的构造器。如果父类没有不带
参数的构造器,并且在子类的构造器中又没有显示的调用父类的其他构造器,则JAVA编译错误
5.代码实例:
public class Car {
private String name ="汽车";
private double price =10.0;
private static int aa =5;
public String getName() {
return name;
}
public static int getAa() {
return aa;
}
public static void setAa(int aa) {
Car.aa = aa;
}
@Override
public String toString() {
return "Car [name=" + name + ", price=" + price + "]";
}
public void setName(String name) {
this.name = name;
}
public Double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public void echo() {
System.out.println("name " + name +"price "+ price );
}
}
public class BMWCar extends Car {
private String color;
private String voice;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getVoice() {
return voice;
}
public void setVoice(String voice) {
this.voice = voice;
}
@Override
public void echo() {
// TODO Auto-generated method stub
System.out.println("Car [name=" + super.getName() + ", price=" + super.getPrice() + "]"+"BMWCar [color=" + color + ", voice=" + voice + "]" );
}
}
6.注意点:
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
//工厂模式,
//Car car =new BMWCar();
//和下面的一样的效果
Car car =new Car();
System.out.println(car);
BMWCar bmwCar =new BMWCar();
System.out.println(bmwCar);
car = bmwCar;
System.out.println(car);
}
}
这里car不会发生丢失,注释写的比较节约内存这样的写法更好,如果不理解请各位看下面的图