12.面向对象-多态
12.1 知识点
Java中的vob
// Java中没有vo关键字,也就是virtual(虚函数)和override(重写)
// 我们如果要重写基类的方法,直接在子类中实现同名方法即可
// 它会直接覆盖父类方法!!
// Java中有类似 base 的关键字 super
// 注意:重写是Java会自动补全一个@Override
// 它类似于注释,可有可无,主要是用来帮助我们阅读代码
public abstract class Lesson12_AnimalAbstract
{
public int age;
public abstract void Eat();
}
public class Lesson12_AnimalFather extends Lesson12_AnimalAbstract
{
@Override
public void Eat()
{
System.out.println("父亲吃东西");
}
}
public class Lesson12_AnimalSon extends Lesson12_AnimalFather implements Lesson12_IFly, Lesson12_IBird
{
@Override
public void Eat() {
super.Eat();
System.out.println("儿子吃东西");
}
@Override
public void Fly() {
System.out.println("飞翔");
}
}
Lesson12_AniamlFather s = new Lesson12_AnimalSon();
s.Eat(); // 父亲吃东西 儿子吃东西 在C#只会打印父类的 但是Java自动处理了
抽象类和抽象方法
// Java中的抽象类和抽象方法使用和C#中基本一致
// 关键字:abstract
// 抽象类不能被实例化
// 抽象方法在抽象类中声明,必须被实现
接口
// Java中接口中方法默认(只能)为public
// Java中接口可以声明字段,但是默认(只能)是static和final的,也就是静态常量
// Java中继承接口的关键字是implements,一般写在继承类之后
// 继承多个接口用逗号分隔
// Java中不存在显示实现接口,重写不同接口的同名方式时,"两个接口共享"
public interface Lesson12_IBird
{
void Fly();
}
public interface Lesson12_IFly
{
// 默认并且只能是 静态常量
int speed = 10;
void Fly();
}
System.out.println(Lesson12_IFly.speed); // 10
Lesson12_IFly s2 = new Lesson12_AnimalSon();
s2.Fly(); // 飞翔
Lesson12_IBird s3 = (Lesson12_IBird) s2;
s3.Fly(); // 飞翔
总结
Java中多态相关知识点,和C#中基本一致,相对C#更简单:
- 没有vo关键字,有类似base的super
- 继承接口用implements
- 接口中可以声明变量,但是是静态常量
- 不存在显示实现接口(多个接口存在同名方法,实现一次即可)
12.2 知识点代码
Lesson12_AnimalAbstract
public abstract class Lesson12_AnimalAbstract
{
public int age;
public abstract void Eat();
}
Lesson12_AnimalFather
public class Lesson12_AnimalFather extends Lesson12_AnimalAbstract
{
@Override
public void Eat()
{
System.out.println("父亲吃东西");
}
}
Lesson12_AnimalSon
public class Lesson12_AnimalSon extends Lesson12_AnimalFather implements Lesson12_IFly, Lesson12_IBird
{
@Override
public void Eat() {
super.Eat();
System.out.println("儿子吃东西");
}
@Override
public void Fly() {
System.out.println("飞翔");
}
}
Lesson12_IBird
public interface Lesson12_IBird
{
void Fly();
}
Lesson12_IFly
public interface Lesson12_IFly
{
//默认并且只能是 静态常量
int speed = 10;
void Fly();
}
Lesson12_面向对象_多态
public class Lesson12_面向对象_多态
{
public static void main(String[] args)
{
//知识点1: Java中的vob
//Java中没有vo关键字,也就是virtual(虚函数)和override(重写)
//我们如果要重写基类的方法,直接在子类中实现同名方法即可
//它会直接覆盖父类方法!!
//Java中有类似 base 的关键字 super
//注意:重写是Java会自动补全一个@Override
//它类似于注释,可有可无,主要是用来帮助我们阅读代码
Lesson12_AnimalAbstract s = new Lesson12_AnimalSon();
s.Eat();//父亲吃东西 儿子吃东西 在C#只会打印父类的 但是Java自动处理了
//知识点2:抽象类和抽象方法
//Java中的抽象类和抽象方法使用和C#中基本一致
//关键字:abstract
//抽象类不能被实例化
//抽象方法在抽象类中声明,必须被实现
//知识点3:接口
//1.Java中接口中方法默认(只能)为public
//2.Java中接口可以声明字段,但是默认(只能)是static和final的,也就是静态常量
//3.Java中继承接口的关键字是implements,一般写在继承类之后
//4.继承多个接口用逗号分隔
//5.Java中不存在显示实现接口,重写不同接口的同名方式时,"两个接口共享"
System.out.println(Lesson12_IFly.speed);//10
Lesson12_IFly s2 = new Lesson12_AnimalSon();
s2.Fly();//飞翔
Lesson12_IBird s3 = (Lesson12_IBird) s2;
s3.Fly();//飞翔
//总结
//Java中多态相关知识点
//和C#中基本一致,相对C#更简单
//1.没有vo关键字,有类似b的super
//2.继承接口用implements
//3.接口中可以声明变量,但是是静态常量
//4.不存在显示实现接口(多个接口存在同名方法,实现一次即可)
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com