JAVA面向对象04
一·多态
多态:主要指同一种事务表现出来的多种形态。
语法格式 父类类型引用 引用变量名 = new 子类类型();
多态特点:
-
当父类类型的引用指向子类类型的对象时,父类类型的引用可以直接调用父类独有的方法。
-
当父类类型的引用指向子类类型的对象时,父类类型的引用不可以直接调用子类独有的方法。
-
对于父子类都有的非静态方法来说,编译阶段调用父类版本,运行阶段调用子类重写的版本(动态绑定)。
-
对于父子类都有的静态方法来说,编译阶段和运行阶段都调用父类版本。
二·引用数据类型间的转换
-
引用数据类型之间的转换方式有两种,自动类型和强制类型转换。
-
自动类型转换主要指小类型向大类型的转换,也就是子类转为父类,也叫向上转型。
-
强制类型转换主要指大类型向小类型的转换,也就是父类转为子类,也叫做向下类转换或显示转换。
-
引用数据类型之间的转换必须发生在父子类之间,否则编译报错。
-
若强转的目标类型并不是该引用真正指向的数据类型时编译通过,运行阶段发生类型转换异常。
-
为了避免上述错误的发生,应该在强转之前进行判断,格式如下 if(引用变量 instanceof 数据类型) ,判断引用变量指向的对象是否为后面的数据类型。
三·多态的实际意义
1.多态的实际意义在于屏蔽不同子类型的差异性实现通用的编程带来不同的效果。
四·抽象方法的概念
注意:抽象类主要指不能具体实例化的类并且使用abstract关键字修饰,也就是不能创建对象
抽象方法主要指不能具体实现的方法并且使用abstract关键字修饰,也就是没有具体方法。
抽象类的概念:指不能具体实例化的类并且使用abstract关键字修饰,也就是不能创建对象。
抽象类中可以有成员变量,构造方法,成员方法。
抽象类中可以没有抽象方法,也可以有抽象方法。
拥有抽象方法的类必须是抽象类,因此真正意义上的抽象类应该是具有抽象方法并且使用abstract关键字修饰的类。
五·抽象类的实际意义
抽象类的实际意义不在于创建对象而在于被继承。
当一个类继承抽象类后必须重写抽象方法,否则该类也编程抽象类,也就是抽象类对子类具有强制性和规范性,因此叫做模本设计模式。
六·经验分享
在以后的开发中推荐使用多台的格式,此时父类类型医用直接调用的所有方法一定是父类中拥有的方法,若以后更换子类时只需将new关键字后面的子类类型修改而无需改变就可以立即生效,从而提高额代码的可维护性和可扩展性。
该方式得缺点是:父类引用不能直接调用子类独有的方法,若调用则需要强制类型转换。
七·多态示例
public class Shape {
private int x;
private int y;
public Shape() {
}
public Shape(int x, int y) {
setX(x);
setY(y);
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public void show() {
System.out.println("横坐标:" + getX() + ",纵坐标:" + getY());
}
// 自定义静态方法
public static void test() {
System.out.println("Shape类中的静态方法!");
}
}

![JAVA面向对象04
[编程语言教程]](https://www.zixueka.com/wp-content/uploads/2024/01/1706710305-ee55419d9121c78.jpg)
