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知识库 -> 2022年4月21日-Java面向对象三大特性 -> 正文阅读

[Java知识库]2022年4月21日-Java面向对象三大特性

Java面向对象三大特性


日期 :2022年4月21日 13:03:46

主题 :Java面向对象三大特性

作者Nac Jackson


一、封装

封装是什么?

尽可能的隐藏对象内部的实现细节,控制对象的修改及访问权限(通过修饰符实现)

封装重要吗?

答案是肯定重要,在对象外部对相应属性赋值可能会存在非法数据录入,存在安全隐患。此前我们写的代码都是没有进行封装的,也没有对其赋值进行控制。所以实现属性的封装是有非常重要的。

对象的封装通过访问修饰符来完成的,所以对应的访问修饰符具有对数据访问拥有不同的权限

访问对象内部数据是通过get/set方法实现的

public class demo_5 {
    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    private String name; 
    
    
    private String age;

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

二、继承

继承是什么?

字面意思理解就是儿子获得了父亲的财产,在Java中的继承也是差不多的

继承的规律:

  • 功能越精细,重合点越多,越接近父类。
  • 功能越粗略,重合点越少,越接近Object类
class Person{
    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    private String name;
    private String age;

    public Person(String name, String age) {
        this.name = name;
        this.age = age;
    }
}
class Boy extends Person
{

    public Boy(String name, String age) {
        super(name, age);
    }
}

继承的特点:

- 语法:class子类extends父类//定义子类时,显示继承父类
- 应用:产生继承关系后,子类可以使用父类中的属性和方法,也可以定义子类独有的方法
- 好处:提高了代码的重用性、可扩展性

注意:

  • 构造方法不可以继承,private修饰的属性和方法不可继承,父子类不在同一个包内时,default修饰的属性和方法不可继承

三、访问修饰符

自身类包内非包内其他
private×××
default××
protected×
public

四、方法重写

什么是重写?

当一个父类的方法无法满足到实际的使用需求时,可以再子类中定义一个相同的方法进行覆盖,也称为重写(重新写一次对应的方法)

重写(Override)

  • 规则:
    • 方法名、参数列表、返回值类型相同
    • 访问修饰符可以与父类相同或者是比父类更加宽泛

super关键字

  • 第一种:子类中使用super的形式访问父类的属性和方法
    public Boy(String name, String age) {
        super.getName();
        super.name="Tom";
    }
  • 第二种:子类的构造方法首行,调用父类构造方法的
    public Boy(String name, String age) {
        super(name, age);
    }

五、多态

什么是多态?

父类引用指向子类对象,从而产生多种形态

二者间有直接或者是间接继承关系时,父类引用可指向子类对象,即形成多态

父类应用之间仅可调用父类声明方法和属性,不可调用子类独有的属性和方法

多态的作用?

  • 屏蔽子类之间的差距

  • 灵活、耦合度低

六、装箱拆箱

向上转型(装箱):

class demo {
    public static void main(String[] argd){
        Person person =  new Girl();
        person.person();
    }
}
class Person{
    public void person(){
        System.out.print("This is a person.");
    }
}
class Girl extends Person {
    public void person (){
        System.out.print("This is a Girl.");
    }
}

向下转型(拆箱):

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

        Person person = new Boy("Bittur","fly");
        Person Girl = person;
        System.out.println(Girl.toString());
    }

}

class Person{
    protected String name;
    protected String age;

    public Person() {

    }

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

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                '}';
    }

}

class Boy extends Person {
    public String getVoice() {
        return voice;
    }

    public void setVoice(String voice) {
        this.voice = voice;
    }

    public String getCharacter() {
        return character;
    }

    public void setCharacter(String character) {
        this.character = character;
    }

    public Boy(String voice, String character) {
        this.voice = voice;
        this.character = character;
    }

    public Boy(String name, String age, String voice, String character) {
        super(name, age);
        this.voice = voice;
        this.character = character;
    }

    @Override
    public String toString() {
        return "Boy{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", voice='" + voice + '\'' +
                ", character='" + character + '\'' +
                '}';
    }

    private String voice;
    private String character;
}

class Girl extends Person{
    public String getVoice() {
        return voice;
    }

    public void setVoice(String voice) {
        this.voice = voice;
    }

    public String getCharacter() {
        return character;
    }

    public void setCharacter(String character) {
        this.character = character;
    }

    public Girl(String voice, String character) {
        this.voice = voice;
        this.character = character;
    }

    public Girl(String name, String age, String voice, String character) {
        super(name, age);
        this.voice = voice;
        this.character = character;
    }

    @Override
    public String toString() {
        return "Boy{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", voice='" + voice + '\'' +
                ", character='" + character + '\'' +
                '}';
    }

    private String voice;
    private String character;
}
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 18:22:34  更:2022-04-22 18:24:56 
 
开发: 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年11日历 -2024/11/24 4:28:28-

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