继承
**定义:**可以基于已经存在的类构造一个新的类,新的类继承已有的类可以复用父类的方法和属性,与此同时还可以添加一些新的方法和属性。
java中继承使用extends关键字,被继承的类成为父类、基类、超类。子类可以重写父类的方法(Override)重写的方法方法名、参数列表相同但方法体不同。继承具有传递性,子类利用重写修改父类的方法。当子类对象的重写方法被调用时(无论是通过子类的引用调用还是通过父类的引用调用),运行的是子类的重写修改后的版本。
重写的原则:
方法名和参数列表必须相同
返回值类型、声明的异常范围必须小于父类
访问修饰符比父类要大
父类Car拥有name属性,drive和didi方法
public class Car {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private String name;
public void didi(){
System.out.println("滴滴!");
}
public void drive(){
System.out.println("慢慢开车中。。。");
}
}
子类RunCar继承Car,所以拥有父类的name属性和didi方法,子类重写了父类的drive方法并且拥有自己的属性color
public class RunCar extends Car {
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
private String color;
@Override
public void drive() {
System.out.println("飙车中!");
}
public static void main(String[] args) {
RunCar runCar = new RunCar();
runCar.setColor("红色");
runCar.setName("大牛");
System.out.println(runCar.getColor()+"的"+runCar.getName());
runCar.didi();
runCar.drive();
}
}
执行输出:
红色的大牛
滴滴!
飙车中!
public static void main(String[] args) {
Car car = new RunCar();
car.drive();
}
执行输出:
飙车中!
多态
**定义:**多态是同一个行为具有多个不同表现形式或形态的能力。
实现多态的途径:重写、重载、实现接口
重写:要求同上文
public class Car {
public void drive(){
System.out.println("慢慢开车中。。。");
}
}
public class RunCar extends Car {
@Override
public void drive() {
System.out.println("飙车中!");
}
}
重载:同一个类中方法名相同的方法参数列表不通的情况下,返回值也可以不相同
@Override
public void drive() {
System.out.println("飙车中!");
}
public String drive(String where){
return "路上";
}
接口:不同的实现类可以实现同一个接口
interface Car{
public void drive();
}
class RunCar implements Car{
public void drive(){
System.out.println("跑的飞快。。。");
}
}
class StopCar implements Car{
public void drive(){
System.out.println("在家抱窝。。。");
}
}