首页 > 编程语言 >面向对象编程三大特征(封装、继承和多态)

面向对象编程三大特征(封装、继承和多态)

时间:2022-09-19 20:13:47浏览次数:67  
标签:String 多态 System 面向对象编程 println password public 三大 name

1基本介绍

面向对象编程有三大特征:封装、继承和多态。

2 封装介绍

1663424485765

3 封装的理解和好处

1663424610139

4 封装的实现步骤 (三步)

1663424901200

5 案例

不能随便查看人的年龄,工资等隐私,并对设置的年龄进行合理的验证。年龄合理就设置,否则给默认;年龄, 必须在 1-120, 年龄, 工资不能直接查看 , name的长度在 2-6字符 之间。

public class Encapsulation01 {

    public static void main(String[] args) {
        //如果要使用快捷键alt+r, 需要先配置主类
        //第一次,我们使用鼠标点击形式运算程序,后面就可以用
        Person person = new Person();
        person.setName("小明");
        person.setAge(30);
        person.setSalary(30000);
        System.out.println(person.info());
        System.out.println(person.getSalary());

        //如果我们自己使用构造器指定属性
        Person smith = new Person("smith", 80, 50000);
        System.out.println("====smith的信息======");
        System.out.println(smith.info());


    }
}

class Person {
    public  String name; //名字公开
    private int age; //age 私有化
    private double salary; //..

    public void say(int n,String name) {

    }
    //构造器 alt+insert
    public Person() {
    }
    //有三个属性的构造器
    public Person(String name, int age, double salary) {
//        this.name = name;
//        this.age = age;
//        this.salary = salary;
        //我们可以将set方法写在构造器中,这样仍然可以验证
        setName(name);
        setAge(age);
        setSalary(salary);
    }

    //自己写setXxx 和 getXxx 太慢,我们使用快捷键
    //然后根据要求来完善我们的代码.
    public String getName() {
        return name;
    }
    public void setName(String name) {
        //加入对数据的校验,相当于增加了业务逻辑
        if(name.length() >= 2 && name.length() <=6 ) {
            this.name = name;
        }else {
            System.out.println("名字的长度不对,需要(2-6)个字符,默认名字");
            this.name = "无名人";
        }
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        //判断
        if(age >= 1 && age <= 120) {//如果是合理范围
            this.age = age;
        } else {
            System.out.println("你设置年龄不对,需要在 (1-120), 给默认年龄18 ");
            this.age = 18;//给一个默认年龄
        }
    }

    public double getSalary() {
        //可以这里增加对当前对象的权限判断
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
    //写一个方法,返回属性信息
    public String info() {
        return "信息为 name=" + name  + " age=" + age + " 薪水=" + salary;
    }
}

6 例题

1663426605709

package com.yt.modifier;

public class AccountTest {
    public static void main(String[] args) {
        Account account = new Account("李四",1000,"1234567");
//        account.setName("张三");
//        account.setBalance(120);
//        account.setPassword(1234567);

//        System.out.println("name=" + account.getName());
//        System.out.println("balance=" + account.getBalance());
//        System.out.println("password=" + account.getPassword());
        account.showInfo();
    }

}

class Account {
    private String name;
    private double balance;
    private String password;

    public Account() {
    }

    public Account(String name, double balance, String password) {
        setName(name);
        setBalance(balance);
        setPassword(password);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        if (name.length() >= 2 && name.length() <= 4) {
            this.name = name;
        } else {
            System.out.println("输入的名字有误,给默认值无名氏");
            this.name = "无名氏";
        }
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        if (balance > 20) {
            this.balance = balance;
        } else {
            System.out.println("输入的余额不对,至少要大于20");
            this.balance = 20.0;
        }
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        if (password.length() > 6) {
            this.password = password;
        } else {
            System.out.println("密码位数需要大于六位数");
            this.password = "000000";
        }
    }

    //显示账号信息
    public void showInfo(){
        System.out.println("账号信息 name=" + name + " 余额=" + balance +
                    " 密码=" + password);
    }
}

标签:String,多态,System,面向对象编程,println,password,public,三大,name
From: https://www.cnblogs.com/y-tao/p/16708874.html

相关文章

  • java三大版本以及开发环境搭建
    Java三大版本JavaSE标准版JavaME嵌入式开发JavaEEE企业级开发JDK:javaDevelopmentKit(Java开发者工具)JRE:JavaRuntimeEnvironment(运行环境)JVM:JavaVirtualMa......
  • 别给计算机科学学生教面向对象编程
    面向对象理念是编程时入手问题的一种人类理解意义上的“具象”,在性能关键的领域(科学计算、图形渲染、大数据处理等)这种“具象”所建立起来的计算模型十有八九不是计算效率......
  • jaca-面向对象三大特征
    面向对象编程的三大特征:继承、封装、多态继承  继承是面向对象编程的三大特征之一。继承让我们更加容易实现类的扩展。实现代码的重用,不用再重新发明轮子(don’treinv......
  • 13.5 多态的实现
     classStudent:def__init__(self,name,age):self.name=nameself.age=agedef__str__(self):#object中有__str__()方法,用于对......
  • 面向对象编程 (OOP):您需要知道的一切
    面向对象编程(OOP):您需要知道的一切面向对象编程(OOP),编程中最有趣的话题之一,它有很多优势程序化编程。我们还将讨论OOP中的一些重要方法,它们是封装、继承、多态、抽......
  • 类与对象——多态
     多态的基本概念多态是C++面向对象三大特性之一多态分为两类静态多态:函数重载和运算符重载属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态静......
  • 5.JS面向对象编程
    5.面向对象编程5.1原型对象JavaScript,java,c#。。。。类:模板对象:具体的实例原型: varuser={   name:"cc",   age:3,   sex:'男',   run:f......
  • 11.5面向对象的三大特性
    #面向对象三大特性:封装继承多态#广义得封装:#把方法和变量都封装在类中#比如人狗大战#规范创建对象#创建所有人得属性名都能一致#......
  • 10.1纯函数面向对象编程
    #人狗大战#人-角色#名称等级血量攻击力性别职业#zhangsan={'name':"zhangsan",'level':1,'hp':200,'ad':40,'性别':'不详','职业':'射手'}##l......
  • 面向对象编程
    背景:1.游戏引擎运行于操作系统上,操作系统又运行于特定的硬件(CUP/RAM/IO)上,因此硬件的瓶颈会限制游戏引擎的性能;2.由于摩尔定律接近天花板,芯片上晶体管的密集程度再增加的话......