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();
}

输出结果:

image

多态

  • 多态是方法的多态,属性没有多态

  • 多态存在的条件:两个类之间有继承关系,方法需要重写,父类的引用指向子类对象,即

    Father f1 = new Son();
    
  • 父类无法调用子类独有的方法,若父类的方法被子类重写则调用子类的重写方法,代码见上:

  • 不能重写的方法:static修饰的方法、final常量、private方法。

posted @ 2022-01-05 11:32  张满月。  阅读(27)  评论(0编辑  收藏  举报