面向对象的三个基本特征:封装、继承和多态

文章目录

1、封装

2、继承

3、多态

一、封装

(1)基本概念

封装是把过程和数据封闭起来以避免外界直接访问,外界只能通过已定义的接口实现对数据的访问。封装是一种信息隐藏技术,在java中通过关键字private实现封装。简单地说,封装实际上是将类的数据隐藏起来,并使用方法来控制用户对类的修改和访问数据的程度。

  1. 四种访问控制级别

Public(公共的):公共的访问权限,所有的类都能访问。

default(默认):在当前包内可访问。

Protected:在当前类和它的子类中可访问。

Private:在当前类中可访问。

  1. 封装使用

A、把尽可能多的东西藏起来,对外提高简洁的接口

比如要想去市场买个东西

没有使用封装的步骤:

1先想要买什么东西

2去市场

3挑选东西

4商讨价格

5买东西

6回家

而使用了封装之后的步骤:

1先想要买什么东西

2告诉其他人帮忙

3得到所需的东西

对比来看,我们就会发现,封装去市场、挑东西、谈价格、买东西等细节,封装到了2让其他人帮忙里,这样为使用者提供了更加简单易用的接口,所以买东西会更加方便

B、把所有属性藏起来

加入某种属性允许外界访问,那么提供访问该属性的公开方法。假如狗类有一个名字、年龄属性,不允许外界直接访问属性,但允许提供get和set方法来访问

  1. class Dogs{
  2.     private String name;  //名字
  3.     private String age;   //年龄
  4.     
  5.     public String getName() {
  6.         return name;
  7.     }
  8.     public void setName(String name) {
  9.         this.name = name;
  10.     }
  11.     public String getAge() {
  12.         return age;
  13.     }
  14.     public void setAge(String age) {
  15.         this.age = age;
  16.     }
  17. }
  • 继承

继承:让某个类型的对象获得另一个类型的对象的属性和方法。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为

(一)语法

class A extends B{}

子类从父类继承了什么?这要分两种情况

  • 当A和B在同一包下,A继承了B中public、protected和默认访问级别的成员变量和成员方法
  • 当A和B不在同一包下,A继承了B中public、protected成员变量和成员方法
  • (二)继承父类成员变量/方法
  • 大学生继承了父类学生
  • class Student{
  •     public String collegename="清华大学";
  •     public void stady(){
  •         System.out.println("学习");
  •     }
  • }
  • //大学生
  • class academician extends Student {
  •     public void test(){
  •         System.out.println(collegename);
  •         stady();
  •     }
  • }

调用academician的test()方法,测试如下

清华大学
学习

测试结果:子类academician继承了父类的成员变量和成员方法

  • 重载父类方法
    重载方法必须满足以下条件:
    1、方法名相同
    2、方法的参数类型、个数、顺序至少有一项不同
    3、方法的返回类型可以不同
    4、方法的修饰符可以不相同
  • 多态

多态:对于同一个行为,不同的子类对象具有不同的表现形式。多态存在的3个条件:
1继承 2重写 3父类引用指向子类对象。

public class extend {

    public static void main(String[] args) {

        Animal a = new Dog();

        Animal b = new Cat();

        a.say();

        b.say();

    }

}

abstract class Animal {

    abstract void say();

}

//猫

class Cat extends Animal{

    public String name="小黑";

    public void say(){

        System.out.println("喵喵喵");

    }

}

//狗

class Dog extends Animal{

    public String name="小白";

    public void say(){

        System.out.println("汪汪汪");

    }

}

理解多态
在这个运行环境中,引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定。Java虚拟机会根据引用变量指向的对象来调用该对象的指定方法,这种运行机制被称为动态绑定

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值