面向对象4大特性

面向对象4大特性:抽象,封装,继承,多态。

抽象:在类的设计层次:将某些事务的共同属性提取出来集合到一个类;类与对象之间的关系:类时抽象的,对象是具体的,类是对象的模板,对象的创建时以类未模板的,同一个类创造出来的对象具有共同的属性,但属性值不同。

封装:利用抽象数据类型将数据和基于数据的操作封装在一起(事物的属性和方法),数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他部分只有通过包裹在数据外面的被授权的操作来与这个抽象数据类型交流与交互。

继承:继承是在父类、子类之间共享属性、方法的机制,提高代码的复用性。继承后子类拥有父类的部分属性和方法(私有属性不能继承,构造函数不能继承),子类可另外扩展属于自己的属性和方法,实现功能扩展。

多态:以封装和继承未基础,在抽象的层面上实施一个统一的行为,到个体(具体)的层面上时,这个统一的行为会因为个体(具体)的形态特征而实施自己的特征行为。(针对一个抽象的事,对于内部个体又能找到其自身的行为去执行。)相同的事物,调用其相同的方法,参数也相同时,但表现的行为却不同。常见多态形式:重写和重载。

代码示例

猫,狗等都是宠物,他们都有共同的属性和方法:昵称(name),年龄(age),玩耍( play() )

pet类是所有宠物共同属性的集合

public class Pet {
    public String name;
    public int age;

    public Pet() {

    }

    public Pet(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void play() {
        System.out.println(this.name + "正在玩");
    }
}

 

Dog类,继承Pet类

继承了Pet类的public属性,重写了play()方法,重载了play方法。

public class Dog extends Pet {
    public Dog(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
     @Override
public void play() { System.out.println(this.name + "狗狗正在玩皮球"); } public void play(String action) { System.out.println(this.name + "在" + action); } }

Cat类:继承Pet类,重写play()方法

public class Cat extends Pet {
    public Cat(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }

    @Override
    public void play() {
        System.out.println(this.name + "小猫正在玩线团");
    }
}

main类

public class Test {
    public static void main(String args[]) {

        Pet pet = new Dog("大黄", 3);//实例化一个pet对象
        pet.play();
//        pet.play("sss"); // 错误,pet没有play(String action)方法
        Dog dog = (Dog) pet; //向下转型
        dog.play();
        dog.play("摇尾巴");//扩展功能,重载play,只关心结果,不关心怎么处理
        Cat cat = new Cat("粉红", 2);
        cat.play();
    }
}

输出结果

 

附:权限修饰符作用范围

 本类同包(子类或无关类)不同包(子类)不同包(非子类)
privateY   
默认YY  
protectedYYY 
publicYYYY

 

转载于:https://www.cnblogs.com/GG-Bond/p/10545391.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值