1,重写
1.1首先我们了解一下重写的目的以及要求
重写目的:子类可以继承父类的非私有化的方法,但是有的 时候父类的需求满足不了子类的需求了,这个时候需要重写父类非私有的方法
重写要求:
1.必须有继承关系 2.父类的方法必须是非私有化的 3.在子类中重写父类的方法,这个方法除了方法体不一样其他都一样的。 4.必须再子类中去重写
1.2这里我们举例一个爸爸类与儿子类例子
案例1
package com.qfedu.d_override;
class Father {
public void eat () {
System.out.println("吃粗粮。。。。。。");
}
public void driver () {
System.out.println("开拖拉机。。。。。");
}
}
//当父类不能满足子类的需求的话可以在子类中重写父类的方法
class Son extends Father {
//重写的时候在子类中 只需要打上方法的名字一敲回车即可
//重写的方法 和父类 的 返回值 参数 方法名字 一模一样,但是方法体不一样的
@Override//是重写的严格限定,只要有这个,就证明咱们下面的这个方法
//就是重写的方法,告知程序员 此时eat方法是重写的不是自己独有的
public void eat() {
System.out.println("吃白面馒头......");
}
@Override
public void driver() {
System.out.println("开小汽车");
}
}
public class Demo1 {
public static void main(String[] args) {
Son son = new Son();
son.eat();
son.driver();
//重写的话,是不影响父类的方法的
Father father = new Father();
father.eat();
father.driver();
}
}
案例2
父类:
交通工具:
方法 run();
两个子类:
飞机:
方法 run()
高铁:
方法 run()
公交车:
方法 run()
package com.qfedu.d_override;
class Transportation {
public void run () {
System.out.println("可以跑......");
}
}
class Fly extends Transportation {
//是继承 我就u可以重写父类下面的方法了
@Override//开启重写的严格的限制,告知编译器,下面的方法必须是重写的
public void run () {
System.out.println("飞机跑的很快大概500km/h");
}
}
class Train extends Transportation {
@Override
public void run() {
System.out.println("在铁轨上跑的300km/h");
}
}
class Bus extends Transportation {
@Override
public void run() {
System.out.println("在公路上跑的60km/h");
}
}
public class Demo2 {
public static void main(String[] args) {
Train train = new Train();
train.run();
}
}
2,接下来我们讲重载
在Java中同一个类中可以有很多个方法。方法名字一样。但是参数类型不一样。这种叫重载
总结:
1.方法的重载必须在同一个类中 2.方法名字必须一致 3.方法的参数类型必须不一样 4.方法的返回值可以不一样 5.无参构造和有参构造 也是一种重载
2.1入门案例
package com.qfedu.d_override;
class Person {
//在一个类中,方法法名字一样,但是参数一定不一样。这叫方法的重载
//返回值可以不一样
public void test () {
System.out.println("test");
}
public void test (String name) {
System.out.println(name);
}
public void test (int i) {
System.out.println(i);
}
void test (double d1) {
}
public String test(String str1, String str2) {
return str1 + str2;
}
}
public class Demo3 {
public static void main(String[] args) {
}
}
3,重写与重载区别
3.1有些公司面试会问它俩的区别
区别是作用域不同 重写是在两个类中实现 而重载是在一个类中实现。