标签:stat 方法覆盖 父类继承 相同 abstract 而不是 构造 返回 动向
1、多态:
/**
* - - - (1)多态是方法的多态,不死属性的多态(多态与属性无关);
* - - - (2)多态的存在要有3个必要条件:继承、方法重写、父类引用指向子类对象;
* - - - (3)父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了
*
*
*/
public class TestPolm {
public static void main(String[] args) {
Animal a = new Animal();
animalCry(a);
Dog dog = new Dog();
animalCry(dog);
Cat cat = new Cat();
animalCry(cat);
Animal cat2 = new Cat();
animalCry(cat2);
}
static void animalCry(Animal a){
a.shut();
}
}
class Animal{
public void shut(){
System.out.println("叫了一下!");
}
}
class Dog extends Animal{//继承条件满足
public void shut(){//方法重写条件满足
System.out.println("汪汪汪");
}
}
class Cat extends Animal{//继承条件满足
public void shut(){//方法重写条件满足
System.out.println("喵喵喵");
}
}
/**运行结果:
* 叫了一下!
* 汪汪汪
* 喵喵喵
* 喵喵喵
*/
public class Test{
public static void main(String[] args) {
Student s = new Student();
System.out.println(s instanceof Person); //Student 继承自Person
System.out.println(s instanceof Student);
}
}
public class TestPolm {
public static void main(String[] args) {
Animal cat = new Cat();//自动向上转型
animalCry(cat);
Cat cat2 = (Cat)cat; //强制向下转型
}
static void animalCry(Animal a){
a.shut();
}
}
class Animal{
public void shut(){
System.out.println("叫了一下!");
}
}
class Dog extends Animal{//继承条件满足
public void shut(){//方法重写条件满足
System.out.println("汪汪汪");
}
}
class Cat extends Animal{//继承条件满足
public void shut(){//方法重写条件满足
System.out.println("喵喵喵");
}
}
public class StaticTest
{
public static void main(String[] args)
{
M m = new N();
m.output();
}
}
class M
{
public static void output()
{
System.out.println("M");
}
}
class N extends M
{
public static void output()
{
System.out.println("N");
}
}
上面执行的结果是“M”,也就是是M类型的引用调用的,如果修改main方法中的代码:
N n = new N();
n.output();
那么执行的结果是“N”,也就是N类型的引用调用的。
重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
在面向对象编程中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。
(3)子类函数的访问修饰权限不能少于父类的;
需要重写方法是因为:父类的功能无法满足子类的需求。
方法重写的前提: 必须要存在继承的关系。
方法的重写: 子父类出了同名的函数,这个我们就称作为方法的重写。
什么是时候要使用方法的重写:父类的功能无法满足子类的需求时。
方法重写要注意的事项:
方法的重载:在一个类中 存在两个或者两个 以上的同名函数,称作为方法重载。
方法重载的要求
标签:stat 方法覆盖 父类继承 相同 abstract 而不是 构造 返回 动向
原文地址:https://www.cnblogs.com/caoleiCoding/p/8974568.html