面向对象设计思想的要点

本文深入探讨了面向对象设计中的多态性,包括类间和类内的多态实现。重点阐述了方法的重写(覆盖)和重载的概念,强调了方法重写的要求,如名称、参数、返回类型和异常的一致性,并讨论了多态带来的优点,如消除耦合、增强灵活性。
摘要由CSDN通过智能技术生成

一、类间多态和类内多态

    多态是同一行为具有多个不同表现形式或者表现能力。多态 就是统一接口,使用不同实例而执行不同操作。

1、父类之间的一种多态性。例如:动物 x = new 猫()

public class Test1 {
public static void main(String[] args) {
Animal a1=new Cat();
A a=new A();
a.eee(a1);
}
}
class A{
public void eee(Animal animal){
animal.eat();
}
}
class Animal{
public void eat(){
System.out.println("Animal.eat()");
}
}
class Cat extends Animal{
@Override
public void eat() {
System.out.println("就是爱老鼠");
}
}
class Dog extends Animal{
@Override
public void eat() {
System.out.println("就是爱肉骨头");
}
}

--方法调用中的限制:

针对一个类对象有两种类型,一种称之为编译期类型,编译时系统识别对象的类型,”动物 x = new 猫()”在编译时,系统识别x是动物类别的,所以只能调用动物类定义的方法,而不能调用猫中特殊 的方法。另外一种称之为运行时类型,也就是当程序运行系统识别的类型,new谁就是谁。

覆盖的方法一定不能是private的

2、类内 多态

在一个类对象上调用相同名称的方法,但是当参数不同时执行不同的动作

public class Test2 {
public static void main(String[] args) {
A2 a=new A2();
// a.pp();
// a.pp(12);
a.pp("shitou");
}
}
class A2 {
public void pp() {
System.out.println("A2.pp()");
}
public void pp(Integer k) {
System.out.println("A2.pp(int)");
}
public void pp(Object kk) {
System.out.println("A2.pp(String)");
}
public void pp(int k1,String k2){}
public void pp(String k1,int k2){}
}

方法名称相同,参数不同,和返回值类型无关

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值