12.9 Override
12.9 Override
静态方法
- 父类的引用可以指向子类静态方法(用static修饰的方法)的调用只和左边定义的数据类型有关,如:
public class Person {
public static void Saying()
{
System.out.println("person说了一句话。");
}
}
public class Student extends Person{
public static void Saying()
{
System.out.println("student说了一句话。");
}
}
main()
{
Student S = new Student();
S.Saying();
**Person p = new Student();**
p.Saying();
}
输出结果:
非静态方法
- 重写只和非静态方法有关,即只有非静态方法能够重写。
- 重写要区别于重载(函数的参数个数和参数类型不同)
- 重写的方法必须为public
- 子类和父类都有的方法,如子类重写了父类的方法,则执行子类的方法。
public class Person {
public void Saying()
{
System.out.println("person说了一句话。");
}
}
public class Student extends Person{
public void Saying()
{
System.out.println("student说了一句话。");
}
}
main()
{
Student S = new Student();
S.Saying();
**Person p = new Student();**
p.Saying();
}
输出结果:
多态
-
多态是方法的多态,属性没有多态
-
多态存在的条件:两个类之间有继承关系,方法需要重写,父类的引用指向子类对象,即
Father f1 = new Son();
-
父类无法调用子类独有的方法,若父类的方法被子类重写则调用子类的重写方法,代码见上:
-
不能重写的方法:static修饰的方法、final常量、private方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端