首页 > 编程语言 >Java第七课_面向对象编程

Java第七课_面向对象编程

时间:2023-12-11 20:33:34浏览次数:33  
标签:Java name 第七课 age Person 面向对象编程 println public String

1.面向对象的编程

  • 对象

    public class Practice01 {
    
        public static void main(String[] args) {
            /*
                面向对象的编程,将一切事项都视为对象.对象用类来描述,过程在类里实现.使用时只需要调用类,不需要再考虑如何实现.
    
                将对象的共同特征进行抽取进而形成类.
                大象 : 类
                    属性 : 鼻子眼睛 ...    :   变量
                    行为 : 跑 , 拔树 ....  :   函数
             */
    
            Car car = new Car();
            // m:method 函数    f:field : 属性
            //属性值的操作
            System.out.println(car.color);
            car.color = "black";
            //方法的操作
            car.show();
            // 当内存中不再有变量引用该区域时,GC会清理堆内存中对应的区域
            car = null;
    
            // 借车 :
            Car car1=new Car();// 每一个 new 出来的对象都是堆内存中一块独立的空间
            Car car2 = car1;
            System.out.println("car2 = " + car2);// com.msr.lesson01.Car :自定义类,地址值开头为 全类名/全限定名 : 包名 + 类名 + @xxxxxxxx
            System.out.println("car = " + car);
            car2.wheels = 3;
            car.show();
            car.color = "白色";
            car2.show();// 类是引用型数据类型,地址值传递.因此修改是同步的.
            new Car().show();
    
            // 匿名对象 :
            // 1.匿名对象调用属性无意义
            new Car().wheels = 10;
            // 2.当函数只被调用一次时,可以使用匿名对象
            new Car().show();
            // 3.匿名对象可以作为参数进行传递,其实传递的是地址值
        }
    }
    
    public class Car {
            /*
            成员变量与局部变量的区别 :
            1.声明位置 :
                a.成员变量声明在函数外部,类的内部
                b.局部变量生命在函数或语句内部
            2.默认值
                a.成员变量是有默认值,默认值与数组动态声明默认值一致,可以直接使用
                b.局部变量除了形式参数外都要先初始化再使用
            3.内存中的位置 :
                a.成员变量依附于对象,存在于堆内存中
                b.局部变量依附于函数或语句,存在栈内存中
            4.生命周期 :
                a.成员变量依附于对象,与对象同生共死
                b.局部变量在函数或者语句执行完后,就会清理掉
         */
    
        //在开发中,所有类的属性和方法,都要用以下方式加上注解,方便调用者清楚功能和用法.
        /**
         * 汽车颜色
         */
        String color = "red";
        /**
         * 轮胎数目
         */
        int wheels;// 默认初始化
    
        /**
         * 驾驶汽车
         */
        public void run(){
            System.out.println("跑了....");
        }
    
        /**
         * 展示汽车
         */
        public void show(){
            // 同一个类中,成员函数可以直接访问其他成员
            System.out.println("color = " + color + " , wheels = " + wheels);
            run();
        }
    }
    
  • 封装

    public class Practice {
        public static void main(String[] args) {
            Person person = new Person();
    
            System.out.println(person);
            person.setName("lisi");
            person.setAge(20);
            System.out.println(person.getName());
            System.out.println(person.getAge());
    
            System.out.println(person);
        }
    }
    
    public class Person {
    
        // private : 表示私有的 ; 成员被private修饰后,只能在当前类中访问.降低灵活性,提高安全性
        // 属性私有化后,须提供get与set函数
        private String name;
        private int age;
    
        // set函数
        // 返回值类型  : void, 形参 : 对应成员变量的类型
        // 开发中, 禁止在get与set函数中进行逻辑判断, 前端页面可以帮助过滤数据, get与set尽量保持简洁
        // this : 代表正在访问当前类的对象的类型 ;   通过 this.成员名 来区分成员变量和局部变量
        public void setName(String name){
            this.name  = name;
        }
        public void setAge(int age){
    
            this.age = age;
        }
    
        // get 函数
        // 返回值类型 :  对应成员变量的类型, 形参  无
        public String getName(){
            return name;
        }
    
        public int getAge(){
            return age;
        }
    
        // toString语句, print类变量时, 可以直接输出变量信息
        public String toString(){
            //return "name = " + name + " , age = " + age;
            return "Person : [name = " + name + " , age = " + age + ']';
        }
    }
    
  • 构造器

    public class Practice {
    
        public static void main(String[] args) {
            // 类名 对象名  = new 构造器 ;
            Person person = new Person();
            System.out.println(person);
    
            Person person1 = new Person("lisi");
            System.out.println(person1);
    
            Person person2 = new Person("哪吒", 3);
            System.out.println(person2);
        }
    }
    
    public class Person {
        /*
            构造器/构造函数/构造方法/Constructor : 方便给类变量创建时即赋值
    
            格式 :   修饰符  类名(数据类型 变量名, 数据类型 变量名, ...){
                        初始化内容;
                    }
    
            格式注意 :
                1.构造函数没有返回值类型,也不能写 void
                2.构造函数的名字就是当前类的类名
                3.不能出现 return 语句
    
            注意 :
                1.当没有显式定义构造器时 , 那么JVM默认会提供一个空参构造器
                2.一旦显式定义构造器,无论定义的构造器是否带参数,那么JVM都将不再提供空参构造器
                3.多个构造器之间是以重载的形式存在的
         */
        private String name;
        private int age;
    
        public Person(){
            System.out.println("空参构造器");
        }
    
        public Person(String name) {
            this.name = name;
        }
    
        public Person(String name,int age) {
            this.name = name;
            this.age = age;
        }
    
        // ------------以下为 get set 函数 以及 toString-------------------------------------------
        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;
        }
    
        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    

标签:Java,name,第七课,age,Person,面向对象编程,println,public,String
From: https://www.cnblogs.com/shinya/p/17895483.html

相关文章

  • Java学习之路(十六)
    Java学习之路(十六)1、File类1.1、File类概述和构造方法【应用】File类介绍它是文件和目录路径名的抽象表示文件和目录是可以通过File封装成对象的对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已.它可以是存在的,也可以是不存在的.将来是要通过具体......
  • Java学习之路(十七)
    Java学习之路(十七)1、字符流1.1、为什么会出现字符流【理解】字符流的介绍由于字节流操作中文不是特别的方便,所以Java就提供字符流字符流=字节流+编码表中文的字节存储方式用字节流复制文本文件时,文本文件也会有中文,但是没有问题,原因是最终底层操作会自动进行字节拼......
  • javaweDay1补充
    1.<label>标签可以使label标签中所包含的任何区域都可以聚焦到一个点如果没有label则必须点击那个圆圈才可以选上,而若有点击男也可以选中。2.下图中value后跟的值表明勾选男的时候提交表单的提交为1若改为男则是男3select定义下拉列表,option定义列表项 4.<textarea>文本......
  • Java学习之路(十五)
    Java学习之路(十五)1、Map集合1.1、Map集合概述和特点【理解】Map集合概述interfaceMap<K,V>K:键的类型;V:值的类型Map集合的特点双列集合,一个键对应一个值键不可以重复,值可以重复Map集合的基本使用publicclassMapDemo01{publicstaticvoidmain(Strin......
  • 软件测试/人工智能|Java Edit Plus 安装与配置指南
    前言最近我这个一直使用Python的人,开始尝试学习了一下Java,我的朋友跟我说,别像Python那样,开始就使用一个功能强大的IDE,Java语法更为复杂,可以先使用一个轻量化的编辑器,我开始准备使用notepad++,我朋友跟我推荐了EditPlus,我使用之后,就真香了,本文就给大家介绍一下EditPlus的安装和配置。......
  • java 数组添加元素的两种方法
    方式一:创建一个新数组,长度为原数组加1,然后将原数组数据添加到新数组,最后再添加需要的新数据 @Testpublicvoidredd111(){String[]s1={"aaa","bbb","ccc"};String[]s2=newString[s1.length+1];for(inti=0;i<s1.length;i++){......
  • JAVA 给数组添加元素
    组是不可变长度,那么已经定义的数组,怎么添加元素呢?//1.已有的数组column和list集合String[]column={"身份证号","员工编号","姓名"};List<String>list=newArrayList<>();list.add("奖金");list.add("提成&q......
  • 软件测试/人工智能|Java Edit Plus 安装与配置指南
    前言最近我这个一直使用Python的人,开始尝试学习了一下Java,我的朋友跟我说,别像Python那样,开始就使用一个功能强大的IDE,Java语法更为复杂,可以先使用一个轻量化的编辑器,我开始准备使用notepad++,我朋友跟我推荐了EditPlus,我使用之后,就真香了,本文就给大家介绍一下EditPlus的安装和配......
  • Java基础面试题
    一、面试题汇总1.请简述java特点?简单、平台无关性、面向对象、多线程、分布性、高性能(相对于其他解释型语言)、健壮性、开源2.什么是JDK,JRE,JVM及它们之间的关系?JDK是JAVA的核心,包括JRE(JAVA虚拟环境)、编译器、运行工具等JRE是JAVA运行环境,包括JVM、JAVA平台核心类和支......
  • JAVA:mapper.java和mapper.xml的关系,以及foreach的用法
    简单理解就是,java声明了方法,xml实现了方法,类似与接口与实现接口,他们之间的关系如下:// Mapper.java中List<Ranks>inquireOnlyName(@Param("names")List<String>names,@Param("status")Stringstatus,@Param("startIndex&qu......