Java中的多态,抽象类,接口

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ztyxy1115/article/details/78797290

Java中的多态,抽象类,接口

多态

在运行期间,判断所引用的对象的实际类型,根据实际情况调用特定的方法,即,同一个对象的多种状态的行为。

多态所需要满足的条件

继承

重写

父类引用指向子类的对象(向上转型)

⽰例:喜欢宠物的年轻妇⼥

public class Animal {

public String name;

public Animal(String name) {

this.name = name;

}

public void enjoy() {

System.out.println("我是动物的enjoy⽅方法");

}

}

class Dog extends Animal {

public String furColor;

public Dog(String name, String furColor) {

super(name);

this.furColor = furColor;

}

@Override

public void enjoy() {

System.out.println("旺旺...");

}

动态绑定(多态)

动态绑定是指在运⾏期间,判断所引⽤对象的实际类型,根据其实际的类型调⽤相应的⽅法,多态即:⼀个对象的多

种状态的⾏为。

}

@Override

public String toString() {

return "我是⼀一只狗," + this.name +"是我的名字,我的⽑毛⾊色是" +this.furColor;

}

}

class Cat extends Animal {

public String eyeColor;

public Cat(String name, String eyeColor) {

super(name);

this.eyeColor = eyeColor;

}

@Override

public void enjoy() {

System.out.println("喵喵...");

}

@Override

public String toString() {

return "我是⼀一只猫," + this.name +"是我的名字,我眼睛的颜⾊色是" +this.eyeColor;

}

}

class Lady {

private String name;

private Animal pet;

public Lady(String name, Animal pet) {

this.name = name;

this.pet = pet;

}

public void enjoy() {

pet.enjoy();

}

}

@Test

public void test2(){

Dog d = new Dog("⾦毛", "⻩色");

Cat c = new Cat("咖菲猫", "咖啡⾊");

Lady mary = new Lady("Mary", d);

Lady lucy = new Lady("Lucy", c);

mary.enjoy();

lucy.enjoy();

}

抽象类

用关键字abstract修饰的类,就是抽象类,抽象类中必然有一个或者多个抽象方法,抽象方法不需要写任何东西,即,public abstractvoid eat();

抽象类需要注意

子类继承父类必然要重写父类的抽象方法,

抽象类不能实例化

接口

接口是一种标准,用interface关键字定义的。接口是抽象类的特殊化。其实是抽象方法和静态常量值的定义的集合。

示例:

packagetest11;

public interfaceVehicle {

   voidstart(int speed);

   voidstop(int speed);

}

抽象类与接口的区别

接口是抽象类的特殊版本,接口的方法必须都为抽象,抽象类中有的方法可以不为抽象方法。

实现抽象类里的方法时,可以实现部分的方法,但是接口里的方法必须都要实现

抽象类中可以有私有的成员变量和私有的方法

一个类只能继承一个抽象类,Java只支持单继承,但是一个类可以实现多接口

接口中的方法全部被修饰为公共的抽象方法即,public abstract类型的

 

 

猜你喜欢

转载自blog.csdn.net/ztyxy1115/article/details/78797290
今日推荐