IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java中面向对象的三大特性(封装、继承、多态) -> 正文阅读

[Java知识库]Java中面向对象的三大特性(封装、继承、多态)

目录

一、封装

1. 含义

2. 封装的实现

3. 封装的优缺点

4. 封装的实例

二、继承

1.含义

2.继承的实现

3. 继承的好处、弊端、应用场景

4. 继承的实例

?三、多态

1. 含义?

2. 多态的实现

?3. 多态的优缺点

4. 多态的实例

一、封装


1. 含义

????????封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

2. 封装的实现

1. 需要修改属性的访问控制符(修改为private)

private关键字:

2. 创建getter/setter方法(用于属性的读写)

3. 在getter/setter方法中加入属性控制语句(用于判断属性值的合法性)

3. 封装的优缺点

优点:通过方法来控制成员变量的操作,提高了代码的安全性。把代码用方法进行封装,提高了代码的复用性

缺点:将变量等使用private修饰,或者封装进方法内,使其不能直接被访问,增加了访问步骤与难度。

4. 封装的实例

//手机类
public class Phone {

    //定义成员变量(属性)
    private String brand;  //品牌
    private int price;     //价格
    private String color;  //颜色

    //无参构造方法
    public Phone(){}

    //带参构造方法
    public Phone(String brand, int price, String color){
        this.brand=brand;
        this.price=price;
        this.color=color;
    }

    //定义set()和get()方法分别来写入和读出手机的品牌、价格、颜色等信息
    public void setBrand(String brand){
        this.brand=brand;
    }
    public String getBrand(){
        return brand;
    }

    public void setPrice(int price){
        this.price=price;
    }
    public int getPrice(){
        return price;
    }

    public void setColor(String color){
        this.color=color;
    }
    public String getColor(){
        return color;
    }
}

this关键字:

二、继承


1.含义

????????继承所表达的就是一种对象类之间的相交关系,它使得某类对象可以继承另外一类对象的数据成员和成员方法。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。JAVA只支持单继承,一个类只能有一个父类。比如说,狗属于动物。就可以看成狗类继承了动物类,那么狗类就是动物类的子类(派生类),动物类就是狗类的父类(基类)。

2.继承的实现

格式:Class 子类 extends 父类 { ......... }

3. 继承的好处、弊端、应用场景

好处:

1. 提高了代码的复用性。(多个类相同的成员可以放到同一个类中)

2. 提高了代码的维护性。(如果方法的代码需要修改,修改一处即可)

3.?继承可以让类与类之间产生关系,子父类的继承关系,实现了多态操作的前提。

弊端:继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时子类实现也不得不跟着变化,削弱了子类的独立性。

应用场景:

1. 使用继承,需要考虑类与类之间是否存在is..a的关系,不能盲目使用继承。

2. is..a的关系:谁是谁的一种,例如:老师和学生是人的一种,那人就是父类,学生和老师就是子类。

4. 继承的实例

//动物类(父类)
public class Animal {

    private String name;
    private int age;

    public Animal() {
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
//猫类(子类)继承自动物类(父类)
public class Cat extends Animal{
    public Cat() {
    }

    public Cat(String name, int age) {
        super(name, age);
    }

    public void catchMouse(){
        System.out.println("猫抓老鼠");
    }
}
//测试类
public class AnimalTest {
    public static void main(String[] args) {
        //创建猫类对象
        Cat c1 = new Cat();
        //设置属性
        c1.setName("加菲猫");
        c1.setAge(5);
        //获取并输出属性值
        System.out.println(c1.getName()+","+c1.getAge());
        //调用方法
        c1.catchMouse();
    }
}

运行结果:

this和super关键字:

??

变量、成员方法访问特点:

构造方法的访问特点:

方法重写:

注意事项:

?三、多态


1. 含义?

????????多态指的是对象的多种形态。多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。在程序运行时才确定具体的类,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

2. 多态的实现

1. 必须有子类和父类,具有继承或实现(继承)

2. 子类必须重写父类的方法(重写)

3. 父类的引用变量指向子类的对象(向上转型)

?3. 多态的优缺点

优点:提高了代码的扩展性;定义方法时,如果将父类型作为参数,在使用方法时,可以传递任意子类对象。

缺点:只能使用父类的引用访问父类的成员,不能使用子类的特有功能。

4. 多态的实例

//动物类(父类)
public class Animal {

    //定义方法
    public void cry(){
        System.out.println("动物叫声");
    }
}
//猫类(子类)继承自动物类(父类)
public class Cat extends Animal {

    //方法重写
    @Override
    public void cry() {
        System.out.println("猫喵喵叫");
    }
}
//测试类
public class Demo {
    public static void main(String[] args) {
        //父类的引用指向子类的对象
        Animal a = new Cat();
        a.cry();
    }
}

运行结果:

成员访问特点:

多态中的转型:

向上转型:父类引用指向子类对象。例如:Animal a= new Dog();

向下转型:父类引用转换成子类对象。转换格式:子类 对象名 = (子类)父类引用;


  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 11:30:08  更:2021-07-29 11:30:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/9 6:36:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码