Java基础——多态
一、类的种类
类的多态,接口的多态
二、多态
类的多态
//Person类
public abstract class Person {    
    public abstract void doSomthing();
}
//Student类
public class Student extends Person{
    @Override
    public void doSomthing() {
     // TODO Auto-generated method stub
     System.out.println("学生学习");
    }
}
//Teacher类
public class Teacher extends Person{
    @Override
    public void doSomthing() {
     // TODO Auto-generated method stub
     System.out.println("老师教书");
    }
}
//实现:因为Student和Teacher extends Person所以可以用Person指向Student和Teahcer
public static void main(String[] args) {
    Person p1= new Student(); //A a=new B()
    p1.doSomthing();
    Person p2= new Teacher();
    p2.doSomthing();
    }
 //如上例子,p1只能调用自己的方法和子类继承自己的方法,不能调用子类的方法。如果要调用就要向下转型
 //向下转型
 Person p1= new Student(); 
 Student s1=(Student)p1;
 s1.test();
 //A a=new B()
 a能调用哪些方法看自己(a)的类型,对象能执行哪些方法主要还是看左边的类型,和右边的关系不大
接口的多态
//接口类Photo
public interface Photo {
    public void takePhoto();
}
//Sony实现Photo类
public class Sony implements Photo{    
    @Override
    public void takePhoto() {
     // TODO Auto-generated method stub
     System.out.println("sony能拍照");
    }
}
//Iphone14Max实现Photo类
public class Iphone14Max implements Photo{
    @Override
    public void takePhoto() {
     // TODO Auto-generated method stub
     System.out.println("14能拍照");
    }
}
//调用
public class Demo {
    public static void main(String[] args) {
     Photo photo=new Sony();
     photo.takePhoto();
     Photo photo2=new Iphone14Max();
     photo2.takePhoto();
    }
}
三、注意事项
1.存在继承关系(父类和子类 接口和实现类),多态是方法的多态,属性没有多态。父类和子类有联系,类型转化异常,ClassCastException
2.子类重写了父类的方法 (static不能被重写 final不能被重写 private不能被重写)
3.父类引用指向子类对象

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号