美文网首页
Java基础学习(五)- 面向对象

Java基础学习(五)- 面向对象

作者: 做个合格的大厂程序员 | 来源:发表于2020-05-16 18:30 被阅读0次

面向对象

概念
把一些特定功能的实现或者属性封装成一个类,这样结构就清晰了很多。在用的时候调用对应的类即可。

特点

  • 是一种符合习惯的思想
  • 可以将复杂的事情简单化
  • 从执行者变成了指挥者

定义一个类

代码示例

//定义一个学生类
public class student{
        String name;
        int age;

        public void study(){
            System.out.println("学生学习");
        }

        public void eat(){
            System.out.println("学生吃饭");
        }
    }

使用给一个类

代码示例

Student s = new Student();

s.name = "张三";
s.age = 18;
s.eat();
s.study();

格式

类名 对象名 = new 类名()

成员变量和局部变量的区别

  • 在类中的位置不同
    • 成员变量:类中方法外
    • 局部变量:方法内或者方法声明上
  • 在内存中的位置不同
    • 成员变量:堆内存
    • 局部变量:栈内存
  • 声明周期不同
    • 成员变量:随着对象的存在而存在,随着对象的消失而消失
    • 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
  • 初始化值不同
    • 成员变量:有默认的初始化值
    • 局部变量:没有默认的初始化值,必须先定义,赋值,才能使用

Private关键字

定义

  • Private 关键字
    • 是一个权限修饰符
    • 可以修饰成员(成员变量和成员方法)
    • 被Private修饰的成员只能在类中才能访问
  • Private最常见的应用
    • 把成员变量用Private修饰
    • 提供对用的getXX() / setXX() 方法

代码示例

public class Student {
    private String name;
    private int 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 void study(){
        System.out.println("学生要学习");
    }

    public void eat(){
        System.out.println("学生要吃饭");
    }
}

我们不推荐外部直接拿到成员变量的值进行修改,因为出于安全性考虑,比如年龄,如果我们在外部直接赋值为-30岁,显然不符合年龄的逻辑,所以我们应该在setAge方法中进行一定的校验,来保证数据的安全。例如:

public void setAge(int age) {
        if (age >100 || age<0){
            System.out.println("输入数据不合法,请重新输入");
        }else{
            this.age = age;
        }
    }

封装

概述

  • 封装是面向对象的三大特征之一
  • 是面向对象编程语言客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改,就像年龄一样。

原则

  • 将不需要对外提供的内容都隐藏起来
  • 把属性隐藏,提供公共方法对其访问

好处

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

构造方法

构造方法就是在类中重写一个public 类的方法即可

public class Student {
    public Student(){
            System.out.println("这是构造方法");
    }
}

标准类写法

代码示例1

public class Student {
    private String name;
    private int age;


    public Student(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) {
        if (age >100 || age<0){
            System.out.println("输入数据不合法,请重新输入");
        }else{
            this.age = age;
        }
    }

    public void study(){
        System.out.println("学生要学习");
    }

    public void eat(){
        System.out.println("学生要吃饭");
    }
}

代码示例2

private String name;
    private int age;

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age >100 || age<0){
            System.out.println("输入数据不合法,请重新输入");
        }else{
            this.age = age;
        }
    }

    public void study(){
        System.out.println("学生要学习");
    }

    public void eat(){
        System.out.println("学生要吃饭");
    }

上述的区别就是一个是使用系统默认的构造方法,一个是使用自定义的构造方法,除了在初始化类的时候不同,其他的使用都是一致的。

相关文章

  • java SE目录

    java SE目录 java基础(一)java基础(二)关键字面向对象(一)面向对象(二)面向对象(三)集合(一)...

  • Java面试题基础知识篇

    1Java 基础知识面向对象→ 什么是面向对象面向对象、面向过程 略面向对象的三大基本特征和五大基本原则答java...

  • Java基础学习(五)- 面向对象

    面向对象 概念把一些特定功能的实现或者属性封装成一个类,这样结构就清晰了很多。在用的时候调用对应的类即可。 特点 ...

  • Java基础学习五 面向对象

    面向对象 采用面向对象的方式开发一个软件,生命周期当中【整个生命周期中贯穿使用OO面向对象方式】: 类和对象的概念...

  • Java基础03面向对象

    Java 基础02Java编程基础 面向对象上 面向对象的概述 面向对象的概述:面向对象是一种符号人类思维习惯的编...

  • 002java300集基础学习--尚学堂(28~51面向对象)

    java300集基础学习--尚学堂(28~51面向对象) 课时28:面向过程和面向对象的本质区别 本章概述 面向对...

  • spring boot+scala编写web接口

    本人是Java开发者,有面向对象的基础,而Scala也是面向对象的语言,学习后可快速入门。通过学习Scala的面向...

  • Java Web后端 - Spring Boot学习

    学习之前,请确保拥有适当Java基础(或者面向对象编程基础),并且了解HTML/Restful Api至于Java...

  • 【知识详解】JAVA基础(秋招总结)

    JAVA基础 目录 JAVA基础 问:面向过程(POP)和面向对象(OOP)? 问:Python和Java的区别?...

  • Java 基础

    Java 基础01Java开发入门 Java 基础02Java编程基础 Java 基础03面向对象 Java 基础...

网友评论

      本文标题:Java基础学习(五)- 面向对象

      本文链接:https://www.haomeiwen.com/subject/ipprohtx.html