面向对象
什么是多态
1.多态概述 多态是继封装、继承之后,面向对象的第三大特性。
2.多态现实意义理解:
现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。
Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。
即同一方法可以根据发送对象的不同而采用多种不同的行为方式。
3.多态体现为父类引用变量可以指向子类对象。
4.前提条件:必须有子父类关系。
5.存在条件 : 有继承关系,子类重写父类方法,父类引用指向子类对象
6.一个对象的实际类型是确定的,但可以指向对象的引用类型有很多(父类,有关系的类)
创建一个Person类和student类student类是person的子类
在Application类中new student(); 再分别使person类和object指向student
package oopzong.oop.opp5;
public class Application {
public static void main(String[] args) {
//一个对象的实际类型是确定的
//new Student();
//new Person();
//可以指向的引用类型就不确定了:父类的引用指向子类
Student s1 = new Student();
Person s2 = new Student();
Object s3 = new Student();
}
}
在person类中写一个方法
package oopzong.oop.opp5;
public class Person {
public void run(){
System.out.println("你好");
}
}
在Application执行s2
public class Application {
public static void main(String[] args) {
//一个对象的实际类型是确定的
//new Student();
//new Person();
//可以指向的引用类型就不确定了:父类的引用指向子类
Student s1 = new Student();
Person s2 = new Student();
Object s3 = new Student();
s2.run();
}
}
你好
在student类中重写父类方法
package oopzong.oop.opp5;
public class Student extends Person {
@Override
public void run() {
System.out.println("son");
}
}
在Application输出s1 ,s2得
s2.run();//子类重写了父类的方法,执行子类的方法
s1.run();
son
son
再在student类中定义一个方法,且父类person中没有eat方法
public void eat(){
System.out.println("eat");
}
执行s1,s2
public class Application {
public static void main(String[] args) {
Student s1 = new Student();
Person s2 = new Student();
Object s3 = new Student();
s2.eat();//报错,s2的类型是person,person中没有eat方法
s1.eat();
}
}
当子类和父类有相同的方法,且子类没有重写父类则调用父类的,子类重写则调用子类
对象能执行哪些方法,主要看对象左边的类型,和右边关系不大
//Student(子类)能调用的方法都是自己的或者继承父类的
Student s1 = new Student();
//Person 父类型 可以指向子类,但是不能调用子类独有的方法
Person s2 = new Student();
Object s3 = new Student();
多态的主要事项
1.多态是方法的多态,属性没有多态
2.父类和子类,有联系 (不能把狗转换成猫) 类型转换异常classcastexception!
3.存在条件:继承关系,方法需要重写,父类的引用指向子类对象 father f1 = new son()
不能重写的
1.static 静态方法,属于类,它不属于实例
2.final 常量
3.private方法:
标签:38,java,子类,笔记,Person,Student,new,父类,public From: https://www.cnblogs.com/12345ssdlh/p/16802617.html