面向对象语言的三大特征(封装,继承,多态)

1 封装

1.1封装的概念

将类的某些信息隐藏在类内部,不允许外部程序直接访问,
而是通过该类提供的方法来实现对隐藏信息的操作和访问 。

1.2封装的优点

  1. 只能通过规定的方法访问。
public class Demo1 {
//姓名
    private String name;
//用于给name赋值
    public void setName(String name) {
        this.name = name;
    }
//用于获取name的值    
    public String getName() {
        return name;
    }
}                         代码块儿一

如代码块儿一所示,用private修饰name后,其他类将无法直接调用name(即给name赋值或者获取name的值)。这时,我们给出setName方位供外界给name赋值。同样通过getName方法获取name的值。

  1. 方便控制语句的加入。
    如代码块儿一所示,只需在setName与getName方法中加入if()语句用于控制执行方法的条件即可。
  2. 提高了安全性。
    外界无妨直接访问到类中的成员变量或者成员方法,即提高了安全性。

1.3 封装的实现方法

通过访问权限修饰符修饰
在这里插入图片描述

2 继承

2.1 什么是继承?

继承:继承是面向对象程序设计不可缺少的设计思想,是实现代码可重
用的根基,是提高代码可扩展性的主要途径。
继承是从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,并能扩展新的能力。 在JAVA中使用extends关键字来表示继承关系。
JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个直接父类。
继承之后子类可以调用父类的所有非私有属性和非私有方法

2.2 继承的方式。

[访问权限修饰符][修饰符] 子类名 extends 父类名{子类体}

 public class  Cat extends Animal {
}                    

例如以上代码块就有子类Cat继承父类Animal。

2.3继承的传递性

C类从B类继承,B类又从A类继承
那么C类就具有B类和A类的所有非私有属性和非私有方法
当一个没有继承任何一个类时,jvm会默认让类继承Object类
Object是 java为所有类提供的基类.

2.4继承中的构造方法

子类构造方法会先调用父类构造方法
使用super关键字调用父类任意一个构造方法,必须写在构造方法的第一行
如果子类的构造方法中没有显式地调用基类构造方法,则系统默认调用基类无参数的构造方法。

2.5 super关键字用途

使用super关键字访问父类成员。
用super.成员变量名来引用父类成员变量。
用super.方法名(参数列表)访问父类的方法。
用super.构造方法(参数列表)访问父类构造方法。

2.6 方法的重写(OverRide)

应用场景
当父类的方法实现不能满足子类需求时,可以对方法进行重写( override)
在子类中可以根据需要对从基类中继承来的方法进行重写。
方法重写规则
方法名相同、参数列表相同;
返回值类型相同;
访问权限不能小于父类权限;
注意:构造方法,静态方法不能重写,成员变量不存在重写。

2.7 抽象方法

抽象方法是一种特殊的方法:它只有声明,而没有具体的实现.
抽象方法必须用abstract关键字进行修饰.
抽象类
● 如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象
类。
● 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方
法和构造方法。
● 用abstract修饰的类就是抽象类。如果某个类中包含有抽象方法,那么该类就必
须定义成抽象类。

2.8 抽象类

特点:
抽象类不能被实例化,但可以有构造方法,因为抽象类中含有无具体实现的方法,
所以不能用抽象类创建对象。
抽象类只能用作基类,表示的是一种继承关系。继承抽象类的非抽象类必须实现其中的所有抽象方法,而已实现方法的参数、返回值要和抽象类中的方法一样。否则,该类也必须声明为抽象类。
使用关键字abstract定义抽象类,一般语法:
在这里插入图片描述
● 抽象类,抽象方法,在软件开发过程中都是设计层面的概念。也就是说,
设计人员会设计出抽象类,抽象方法,程序员都是来继承这些抽象类并
覆盖抽象方法,实现具体功能。

3 多态

同一种事物,在不同时刻表现不同的状态。

3.1 多态存在的三个必要条件

要有继承(包括接口的实现)(前提条件)
要有重写(前提条件)
父类引用指向子类对象

当编译期类型是父类,运行期类型是子类时,被称为父类引用指向子类对象。

class Animal{ ……
}
class Cat extends Animal{ ……
}
class Dog extends Animal { ……
}
Animal x = new Cat() //Animal 的引用指向Cat的对象

定义一个父类即 Animal类,创建子类Cat类与Dog类用extends连接父类与子类。

3.2重写

重写父类的方法,方法名字,参数,返回值相同。

public abstract class Animal {
    public  void feedAnimal(Animal animal){
    }
    public abstract void eat();
}                                        父类
public class  Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("猫吃鱼");//重新了父类方法,方法名与参数与父类相同。
    }
}                                       子类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值