首页 > 编程语言 >java_day5_面向对象、private关键字

java_day5_面向对象、private关键字

时间:2024-09-24 20:34:32浏览次数:1  
标签:java 对象 成员 day5 private Teacher new public

一、面向对象

面向对象与面向过程的区别?

    面向过程的思想:代表语言 C语言 功能开发中的每一步都是自己参与的
    面向对象的思想:代表语言 java语言 指的是不断地创建对象,指挥对象事情过程

面向对象的思想:

        1、都有那些事物?
            判断事物的方式:
                1)UML课程知识
                2)名词提取法
                    大象,冰箱,测试类

        2、事物中都有些什么?
                大象:
                    属性:身高,体重,性别....
                    行为:跳进冰箱,吃饭,睡觉....
                冰箱:
                    属性:颜色,容量,大小...
                    行为:打开冰箱门,关闭冰箱门...
                测试类:
                    main方法

面向对象的三大特征:

    封装
    继承
    多态

如何通过一个类创建一个对象

    语法格式:类名 对象名 = new 类名();
public class Student {
    //成员变量,定义在类中方法外
    String name;
    int age;
    String gender;

    //成员方法
    public void eat() {
        System.out.println("吃饭");
    }

    public void sleep() {
        System.out.println("睡觉");
    }
}

class Demo1 {
    public static void main(String[] args) {
        //创建一个学生对象
        //如何通过一个类创建一个对象
        // 语法格式:类名 对象名 = new 类名();
        Student s1 = new Student();
        //获取对象中的成员变量
        //对象名.成员变量名
        String n1 = s1.name;
        System.out.println("姓名:" + n1);
        s1.name = "wll";
        System.out.println("姓名:" + s1.name);

        //如何使用对象中的成员方法
//        eat();
        //对象名.成员方法名()
        s1.eat();
        s1.sleep();
    }
}
//定义一个教师类
class Teacher {
    public void fun2(){
        System.out.println("好好学习,天天向上!");
    }
}

class Demo2{
    //当一个类作为方法的参数的时候,将来调用时需要传入该类的对象【或者该类的子类对象】
    public void method(Teacher t){ //Teacher t = new Teacher()
        t.fun2();
    }
}

public class TeacherDemo1 {
    public static void main(String[] args) {
        Demo2 d1 = new Demo2();
//        Teacher t1 = new Teacher();
        d1.method(new Teacher()); // new Teacher()

        //匿名对象,指的是没有名字的对象,只能用一次,后续无法继续使用该对象
//        d1.method(new Teacher());
    }
}

二、private

    我们按照今天说的类和对象的知识,创建了一个Person对象,并且也成功赋值了姓名和年龄
    但是我们可以赋值一些不合实际的数值,这是不应该出现,所以我们应该在赋值之前,要先判断一下要赋的值是否合理
    既然是加判断,就不是一句话可以搞定的,我们可以定义一个方法,使用方法对成员变量赋值
    我们确实可以通过加一个方法来对成员变量进行赋值,但是谁规定了我必须要用这个方法呢?我们依旧可以使用原来的方式进行赋值
    我们如果可以通过一些手段,让外界无法直接获取成员变量,这样就不得不使用方法进行赋值了。
    java提供一个关键字给我们使用:private 私有的

    private关键字:
        可以修饰成员变量,成员方法,构造方法
        在同一个类中,private关键字不起作用,相当于透明的,同一个类中被private关键字修饰的成员可以随意访问


    说到现在,其实说的就是面向对象编程三大特征之一:封装
    封装: 使用private关键字将类中细节进行隐藏,只对外提供公共的访问方式。

    一个标准类的写法:最终是4.0版本
        1.0版本的写法:使用private关键字修饰成员变量
        类:
            成员变量:使用private关键字修饰
            成员方法:针对每一个成员变量提供对应公共的setXxx()和getXxx()
class Person {
    private String name;
    private int age;

    public String getName(){
        return name;
    }

    public void setName(String n){
        name = n;
    }

    public int getAge(){
        return age;
    }

    public void setAge(int i) {
        if (i > 0 && i <= 130) {
            age = i;
        }else {
            System.out.println("输入的年龄不合实际!");
        }
    }

    private void fun1(){
        System.out.println("好好学习,天天向上!");
    }

    public void show1(){
        fun1();
    }
}

public class PersonDemo {
    public static void main(String[] args) {
        //创建一个Person类的对象
        Person p1 = new Person();
//        System.out.println("姓名:" + p1.name);
//        System.out.println("年龄:" + p1.age);
        System.out.println("姓名:" + p1.getName());
        System.out.println("年龄:" + p1.getAge());
        System.out.println("-------------------------");
//        p1.name = "江川";
//        p1.age = 1800;
        p1.setAge(1800);
        p1.setName("wll");
//        System.out.println("姓名:" + p1.name);
//        System.out.println("年龄:" + p1.age);
        System.out.println("姓名:" + p1.getName());
        System.out.println("年龄:" + p1.getAge());
        System.out.println("------------------------");
//        p1.fun1();
        p1.show1();
    }
}

标签:java,对象,成员,day5,private,Teacher,new,public
From: https://www.cnblogs.com/w-ll/p/18429953

相关文章

  • java封装题目3
    3.以面向对象的思想,编写自定义类描述图书信息。设定属性包括:书名,作者,出版社名,价格;方法包括:信息介绍show()要求:1)设置属性的私有访问权限,通过公有的get,set方法实现对属性的访问2)限定价格必须大于10,如果无效进行提示3)限定作者,书名为只读属性4)设计构造方法实现对属性......
  • 基于SSM的选题管理系统(有报告)。Javaee项目。
    演示视频:基于SSM的选题管理系统(有报告)。Javaee项目。项目介绍:采用M(model)V(view)C(controller)三层体系结构,通过Spring+SpringMvc+Mybatis+Jsp+Maven来实现。MySQL数据库作为系统数据储存平台,实现了基于B/S结构的Web系统。系统设计思想一个成功的网站应明确......
  • JAVA的字符串这篇讲清楚了
    JAVA_String从概念上讲,JAVA字符串就是Unicode序列。例如"Java\u2122"由5个UNICODE字符J,a,v,a和™组成。Java没有内置和字符串类型,而是试用java标准库中提供的一个预定义类,很自然地叫做了string。子串substringStringsubStr=str.substring(beginIndex);这里beginIndex指......
  • java封装题目2
    2.以面向对象的思想,编写自定义类描述IT从业者。设定属性包括:姓名,年龄,技术方向,工作年限,工作单位和职务;方法包括:工作要求:1)设置属性的私有访问权限,通过公有的get,set方法实现对属性的访问2)限定IT从业人员必须年满15岁,无效信息需提示,并设置默认年龄为15。3)限定“技......
  • java_day4_数组、方法
    一、数组一维数组数组:是一块连续固定大小的内存空间,有着索引的概念定义数组的语句格式:数据类型[]数组名;【推荐】数据类型数组名[];如果只是定义一个数组的话,没有给初始化值,相当于一个变量没有值,是不能够直接使用的如何对一个数组进行初始化?1、动态初始化......
  • 2024.9.24- java开学测
    1、定义student类,其中包括五个私有变量(stunumber,name,age,sex,score)。各成员的含义如下:变量stunumber为字符串类型String,用于存储学生的学号(有8位数字组成)。变量name为字符串类型String,用于存储学生的姓名。变量age为int类型,用于存储学生的年龄。变量sex为boolean类型,用于存储学......
  • java基础篇之反射(简单详细,快速入门)
    @[TOC]希望本文能帮助你增加对反射的理解反射的简单叙述及相关性质反射的源头——Class类反射的主要应用反射的简单叙述及相关性质能够分析类能力的程序为反射,反射机制的功能极其强大,下面我们就来简单举个例子publicclassStudent{privateStringname;......
  • Java学习笔记(上)——动力节点老杜(某站2000万播放)
    此文章是本人大一学习java时记的笔记,原视频在https://www.bilibili.com/video/BV1Rx411876f,配套服用更佳!一.JAVA开发环境的搭建1.常用的Dos命令1.1win+r打开Dos命令窗口1.2什么是Dos命令在最初的计算机中没有图形界面,也就是说通过Dos命令窗口可以完全完成文件的新建、......
  • JavaEE——多线程
    接着上篇博客我们已经学习了进程的相关概念,了解到进程里面的相关重要属性,那么这篇博客呢我们要学习一个新的知识点——线程!一、引入进程的目的首先引入进程这个概念,是为了解决“并发编程”这样的问题。因为CPU再往小了做,比较困难了,这是因为CPU进入了多核心的时代,要想进一......
  • JavaEE——多线程Thread 类及常见方法
    目录 一、Thread(Stringname)二、是否后台线程isDeamon()三、是否存活isAlive()四、run()方法和start()方法的区别五、中断线程法一:法二:六、线程等待join()七、线程休眠sleep()一、Thread(Stringname)定义:这个东西是给线程(thread对象)起一个名字。起一个......