面向对象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();
    }
}

输出结果

附:权限修饰符作用范围

  本类 同包(子类或无关类) 不同包(子类) 不同包(非子类)
private Y      
默认 Y Y    
protected Y Y Y  
public Y Y Y Y

原文地址:https://www.cnblogs.com/GG-Bond/p/10545391.html

时间: 2024-08-02 22:09:32

面向对象4大特性的相关文章

面向对象3大特性的简单理解

封装,继承,多态 1.封装: 类的内部结构不会被随意破坏,而且外部在调用时不需要了解内部结构, 只需要了解使用接口就可以了. 如:private int age;//外部无法直接访问 //但能通过方法来访问,并且还能增加一些逻辑判断 public void getAge(){ } 2.继承: 代码的重复使用 Java代码: public class Student extends Person{} 3.多态: 子类对象可以代替父类对象来使用 在后面的面向接口编程,体现的更加淋漓尽致 Java代码

面向对象3大特性之一:继承

继承 继承表示一个类型(子类)派生自(继承于)一个基类型(父类),该类型将拥有基类型的所有成员字段和函数(不包括构造函数和析构函数). 注意: 派生类继承基类的所有成员,不管是public.private.protected还是其他的,不管是静态的还是非静态的:但是,虽然派生类继承类基类所有的成员,基类却只能访问由public和protected修饰的成员(派生类继承了基类所有的字段,但是只能访问基类中public和protected修饰的成员) 1 class Person 2 { 3 pri

面向对象3大特性:封装、继承、多态——封装(this 、访问修饰符、内部类)

封装的概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问.而是通过该类提供的方法来实现对隐藏信息的操作和访问 封装的好处: a.只能通过规定的方法访问数据 b.隐藏类的细节,方便修改和实现 封装的实现步骤: 1.修改属性的可见性--设为private 2.创建getter/setter方法--用于属性的读写 3.在getter/setter方法中进入属性控制语句--对属性值的合法性进行判断 public class TelPhone { //定义成员变量 private float sc

C#面向对象课程两大特性——封装、继承 12月23日

一.封装 封装:就是将成员变量设为private私有的,然后将其封装出一个属性 属性是具有get和set两个函数的读取写入器,能够成为赋值取值做数据传递. 封装的方法:在字段名上点击右键,重构—封装字段,即可将字段封装. 二.继承      继承是面向对象编程中一个非常重要的特性,它也是另一个重要特性—多态的基础. 类与类之间可以具有继承关系,一个类只能继承一个父类(单根性),但可以被好多类继承. 父类与子类之间拥有以下两个基本特性: (1)是一种(IS-A)关系:子类是父类的一种特例. (2)

面向对象的三大特性(封装 继承 多态)

一丶封装 1 权限修饰符      可以用来修饰成员变量和成员方法,对于类的权限修饰只可以用public和缺省default.           被public修饰的类可以在任意地方被访问:default类只可以被同一个包内部的类访问.      权限由大到小:public protected default(不写) private           被private修饰的成员只能在本类中访问,外界不能访问 2 set()/get()方法  (1)this关键字    a.可以用来调用变量,

面向对象的三大特性,五大基本原则

面向对象的三大特性: (1)继承 (2)封装 (3)多态 五大基本原则: (1)单一原则:一个类,最好只做一件事,只有一个引起它的变化: (2)开闭原则:对拓展开放,对修改封闭: (3)里氏替换原则:子类必须能够替换其基类.这一思想体现为对继承机制的约束规范,只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础. (4)依赖倒置原则:依赖于抽象.具体而言就是高层模块不依赖于底层模块,二者都同依赖于抽象:抽象不依赖于具体,具体依赖于抽象. (5)接口隔离原则:使用多个小的

前端开发者不得不知的ES6十大特性

前端开发者不得不知的ES6十大特性 转载 作者:AlloyTeam 链接:http://www.alloyteam.com/2016/03/es6-front-end-developers-will-have-to-know-the-top-ten-properties/ ES6(ECMAScript2015)的出现,无疑给前端开发人员带来了新的惊喜,它包含了一些很棒的新特性,可以更加方便的实现很多复杂的操作,提高开发人员的效率. 本文主要针对ES6做一个简要介绍. 主要译自:  http://

java学习中,面向对象的三大特性:封装、继承、多态 以及 super关键字和方法的重写(java 学习中的小记录)

java学习中,面向对象的三大特性:封装.继承.多态 以及 super关键字和方法的重写(java 学习中的小记录) 作者:王可利(Star·星星) 封装     权限修饰符:public 公共的,private 私有的     封装的步骤:          1.使用private 修饰需要封装的成员变量.          2.提供一个公开的方法设置或者访问私有的属性              设置 通过set方法,命名格式:     set属性名();  属性的首字母要大写 访问 通过ge

java基础篇(一) ----- java面向对象的三大特性之封装

java面向对象的三大特性之封装:   封装(Encapsulation)是面向对象的一个重要特征,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节. 通俗的讲所谓封装就是将属性和方法捆绑到一起,封装到一个对象中去, 形成一个不可分割的独立单位,以及尽可能隐藏对象的内部结构,也就是说,如果我们使用了封装技术的话,别人就只能用我们做出来的东西而看不见我们做的这个东西的内部结构了. 如果形容一个人(假设把人看做一个类),我们可以用姓名.年龄,性别等来描述,如果不封