java 多态的含义及特征

多态指的就是同一个对象的不同状态,如果儿子 继承 父亲  那么我们可以用父亲 对象名=new 儿子()

多态只有在有方法重写的时候才有作用,因为父亲 对象名=new 儿子()与父亲 对象名=new 父亲()的区别只在于该儿子重写了父亲的方法会覆盖掉父亲的方法

而在其他情况下则按父亲对象去处理,如下:

假设 父亲 对象名=new 儿子() 左边是父亲,右边是儿子

多态中的成员访问特点
A:成员变量
编译看左边,运行看左边
B:构造方法
子类的构造都会默认访问父类构造
C:成员方法
编译看左边,运行看右边
D:静态方法
编译看左边,运行看左边


代码演示:


class Fu{
	int num=20;
	public Fu(){
		System.out.println("Fu的构造方法");
	}
	public void show(){
		System.out.println("Fu的成员方法");
	}
	public static void show1(){
		System.out.println("Fu的静态方法");
	}
}
class Zi extends Fu{
	int num=10;
	public Zi(){
		System.out.println("Zi的构造方法");
	}
	public void show(){
		System.out.println("Zi的成员方法");
	}
	public static void show1(){
		System.out.println("Zi的静态方法");
	}
}
public class duotai {

	public static void main(String[] args) {
		Fu f=new Zi();
		System.out.println(f.num);
		f.show();
		f.show1();
	}

}
结果:

Fu的构造方法
Zi的构造方法
20
Zi的成员方法
Fu的静态方法


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的多态是指同一类型的对象,在不同情况下会表现出不同的行为。它是面向对象编程中的一个重要特性,可以提高代码的可扩展性和可维护性。Java中实现多态的方式主要有两种:继承和接口。 1. 继承实现多态 继承是Java中实现多态的一种方式。子类可以继承父类的属性和方法,并且可以重写父类的方法。当子类对象调用重写的方法时,会优先调用子类中的方法,而不是父类中的方法。这种行为被称为动态方法调度。 下面是一个简单的例子,演示了如何使用继承实现多态: ```java class Animal { public void makeSound() { System.out.println("Animal is making a sound"); } } class Dog extends Animal { public void makeSound() { System.out.println("Dog is barking"); } } class Cat extends Animal { public void makeSound() { System.out.println("Cat is meowing"); } } public class Main { public static void main(String[] args) { Animal animal1 = new Dog(); Animal animal2 = new Cat(); animal1.makeSound(); // 输出:Dog is barking animal2.makeSound(); // 输出:Cat is meowing } } ``` 在上面的例子中,Animal是一个父类,它有一个makeSound()方法。Dog和Cat是Animal的子类,它们都重写了makeSound()方法。在main()方法中,我们创建了一个Dog对象和一个Cat对象,并将它们赋值给Animal类型的变量。当我们调用这些变量的makeSound()方法时,会分别调用Dog和Cat中的makeSound()方法。 2. 接口实现多态 接口也是Java中实现多态的一种方式。接口定义了一组方法的签名,但没有实现这些方法。类可以实现一个或多个接口,并实现接口中定义的方法。当一个类实现了一个接口时,它必须实现接口中定义的所有方法。这样,我们就可以在不同的类中使用相同的接口,从而实现多态。 下面是一个简单的例子,演示了如何使用接口实现多态: ```java interface Shape { public void draw(); } class Circle implements Shape { public void draw() { System.out.println("Drawing a circle"); } } class Rectangle implements Shape { public void draw() { System.out.println("Drawing a rectangle"); } } public class Main { public static void main(String[] args) { Shape shape1 = new Circle(); Shape shape2 = new Rectangle(); shape1.draw(); // 输出:Drawing a circle shape2.draw(); // 输出:Drawing a rectangle } } ``` 在上面的例子中,Shape是一个接口,它定义了一个draw()方法。Circle和Rectangle是Shape接口的实现类,它们都实现了draw()方法。在main()方法中,我们创建了一个Circle对象和一个Rectangle对象,并将它们赋值给Shape类型的变量。当我们调用这些变量的draw()方法时,会分别调用Circle和Rectangle中的draw()方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值