面向对象的特征

本文详细介绍了Java面向对象的三大特性——封装、继承和多态。封装通过私有化属性并提供公共的get/set方法确保数据安全性;继承使得类能共享属性和方法,子类可以扩展父类的功能;多态则允许子类对象以父类类型存在,实现方法的重写和多形态表现。示例代码展示了这些概念的实际应用。
摘要由CSDN通过智能技术生成
对象的概念

所谓的对象其实就是通过java类所产生的实体。

例如:盖楼房的图纸就是Java类,根据这个图纸修建起来的能够被看见,被使用的这个实际存在的楼房,就是相当于是用过这个图纸得到的对象。

Java类实际是一个抽象意义上的概念,对象就是通过这个java类的抽象概念具体化之后的一个具体概念。

四大作用域

public 公开的 可以被继承

protected 本类和子类和同包的都可以访问

default(默认) 在当前的包下可以访问

private 私有的方法
在这里插入图片描述

面向对象的三大特征

封装

类的属性私有化

public class Person{
private String name;
private int age;
public int getAge(){
return age;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public void setName(String name){
this.name = name;
}
}

封装之后外界不能直接访问我们认为重要的信息,需要使用我们提供的get和set方法来获取,如果对get或者set方法加入判断就可以确保数据的安全性。

继承extends

一个类可以有一个父类,继承了父类的所有public的属性和方法

注意:子类可以直接访问父类的非私有的属性和方法。

​ 子类无法继承父类中的私有的内容

/**
 * @auto:Mrs.Y
 * @email:2508108731@qq.com
 */
package com.wc.pojo;


public class B extends D {
    public static void main(String[] args) {
        D b = new B();
        int age = b.age;
        String loc = b.loc;
        String name = b.name;
        b.m();
    }
}

class D {
    //私有的属性,父类无法继承
    private int id = 1;
    public String name = "张三";
    protected int age = 15;
    String loc = "shanghai";

    public void m() {
        System.out.println("fulei");
    }
}

多态

多态是同一个行为具有多个不同表现形式或形态的能力。

多态发生的在继承的前提下才可以发生,当一个类被多个类继承的时候,我们可以把子类赋值给父类,但是需要注意的是:

​ 1.如果子类赋值给父类对象,子类独有的方法就无法直接调用,需要类型转换

​ 2.当子类赋值给父类的时候,在编译的时候默认调用的是父类的方法,但是执行时执行的是子类重写(@override)的方法;

/**
 * @auto:Mrs.Y
 * @email:2508108731@qq.com
 */
package com.wc.pojo;


public class B extends D {
    @Override
    public void m() {
        System.out.println("b");
    }

    public void a() {
        System.out.println("a");
    }

    public static void main(String[] args) {
        //子类可以赋值给父类
        D b = new B();
        //实例化后调用的实际上是子类重写父类的方法
        b.m();
        //子类赋值给父类,子类独有的方法无法直接使用,需要类型转换
        ((B)b).a();
        D e = new E();
        e.m();
    }
}

class E extends D {
    @Override
    public void m() {
        System.out.println("d");
    }
}

class D {
    private int id = 1;
    public String name = "张三";
    protected int age = 15;
    String loc = "shanghai";

    public void m() {
        System.out.println("fulei");
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值