继承:
一个子类可以继承父类的所有的属性和所有的方法
目的:代码重用,提高代码的可利用率
继承中的构造方法,
在真实企业开发中一定要写一个空参的构造方法。
1).子类的构造方法,一定要调用父类的构造方法
2).子类不能继承构造方法
3).如果父类中没有无参的构造方法,则必须在子类的构造方法中明确的调用父类中的有参数的构造方法。
4).super():曾经的,过去的
super()来调用父类的带参的构造方法。
父类中没有空参的构造方法的时候必须使用super,
而且super必须要放在子类构造方法的第一行
-----------------------------------------------------------------------------------------------------------
2.方法的重写(覆盖)/变量的隐藏都出现在继承当中
1).变量隐藏:子类定义的变量和父类中变量的名字一样,则父类中的变量会被子类中的变量给覆盖
2).super.属性名:可以调用被覆盖的父类中的属性
3).方法的重写(覆盖):
子类定义的方法:方法名,参数和返回值类型跟父类中的方法一致了,
则父类的方法被子类的该方法给重写(覆盖了)
例如:
public class Demo{
public static void main(String[] args) {
Car car=new Car();
Smart s=new Smart();
s.Driver();
System.out.println(s.name);
}
}
class Car {
String name;
String color;
double money=12;
int speed;
public Car(){
}
public Car(double money,String name,String color,int speed){
this.name=name;
this.money=money;
this.color=color;
this.speed=speed;
}
public void Driver(){
System.out.println("开始行驶");
}
}
class Smart extends Car{
String name="smart";
public Smart() {
super();
}
public Smart(double money, String name, String color, int speed) {
super(money, name, color, speed);
}
//public void Driver(){
//System.out.println("开始行驶2222");
//}
}
public static void main(String[] args) {
Car car=new Car();
Smart s=new Smart();
s.Driver();
System.out.println(s.name);
}
}
class Car {
String name;
String color;
double money=12;
int speed;
public Car(){
}
public Car(double money,String name,String color,int speed){
this.name=name;
this.money=money;
this.color=color;
this.speed=speed;
}
public void Driver(){
System.out.println("开始行驶");
}
}
class Smart extends Car{
String name="smart";
public Smart() {
super();
}
public Smart(double money, String name, String color, int speed) {
super(money, name, color, speed);
}
//public void Driver(){
//System.out.println("开始行驶2222");
//}
}
如果子类未重写父类的方法则显示:开始行驶,重写过后“开始行驶222”;
子类定义的方法:方法名,参数和返回值类型跟父类中的方法一致了,
则父类的方法被子类的该方法给重写(覆盖了)