多态与抽象
多态
方法多态
一个方法可以根据发送对象的不同而采用多种不同的行为方式
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();
多态存在的条件
- 有继承关系
- 子类重写父类方法
- 父类的引用指向子类对象 Person person = new Student();
- 多态是方法的多态,属性没有多态
抽象类
-
抽象类用abstract修饰
-
抽象类不能被new,只能通过子类实现
-
抽象类中可以有抽象方法也可以有普通方法
-
抽象类的子类必须重写抽象类的所有抽象方法
-
抽象方法只能在抽象类中
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
}
}

浙公网安备 33010602011771号