多态与抽象

多态

方法多态

一个方法可以根据发送对象的不同而采用多种不同的行为方式

class Person{
    public void run(){
         Sytsem.out.println("person");
    }
}
class Student extends Person{
   public void run(){
       Sytsem.out.println("student");
   }
}
class Teacher extends Person{
    public void run(){
        Sytsem.out.println("teacher");
    }
}
public void Test{
    public void main(String[] args){
        Person p1 = new Person();
        Person p2 = new Student();
        Person p3 = new Teacher();
        p1.run(); //输出person
        p2.run(); //输出student
        p3.run(); //输出teacher
    }
}

对象多态

一个对象的实际类型是确定的,但可以指向对象的引用的种类有很多

//new 一个对象的类型是确定的,但指向对象的引用可以很多
Student studnet = new Student();
Person person = new Studnet();
Object object = new Studnet();

多态存在的条件

  1. 有继承关系
  2. 子类重写父类方法
  3. 父类的引用指向子类对象 Person person = new Student();
  4. 多态是方法的多态,属性没有多态

抽象类

  1. 抽象类用abstract修饰

  2. 抽象类不能被new,只能通过子类实现

  3. 抽象类中可以有抽象方法也可以有普通方法

  4. 抽象类的子类必须重写抽象类的所有抽象方法

  5. 抽象方法只能在抽象类中

    public abstract class Action{
        //抽象方法:称为约束,用abstract修饰
        public abstract void doSomething();
        
        //普通方法
        public void do(){
            
        }
    }
    

接口

只有规范,自己无法写方法~专业的约束,约束和实现分离

public interface UserService{
  //接口中所有定义属性默认都是静态常量的public static final
    int AGE =20;
  //接口中所有定义方法默认都是抽象的public abstract
    void add();
    void del();
    void upt();
    void sle();
}

//接口必须得有实现类实现接口里面的方法
//实现了接口的类必须重写接口的方法
class UserServiceImpl implements UserService{

	@Override
	public void add() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void del() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void upt() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void sle() {
		// TODO Auto-generated method stub
		
	}
	
}

posted @ 2021-10-09 18:42  大帅爱编程  阅读(42)  评论(0)    收藏  举报