首页 > 其他分享 >面向对象

面向对象

时间:2024-07-25 16:10:19浏览次数:13  
标签:String 构造方法 age 面向对象 public 变量 name

面向对象

基础介绍

  1. 什么是类和对象?
    • 类用于描述共同特征,对象是具体的实例。
  2. 成员变量和方法
    • 成员变量是属性,名词。方法是行为,动词。
    • 类名 对象名 = new类名()
  3. 调用
    • 对象名.成员变量()
    • 对象名.方法()

JAVAbean

  1. 类名首字母大写,采用驼峰模式。
  2. 一个java 文件中可以有多个class类,但public修饰的类只能有一个,且被public修饰的类要与文件名相同。(一个文件写一个类)
  3. 成员变量的完整定义格式: 修饰符 数据类型 变量名 = 初始值; ,如果没有赋予初始值[1]就存在默认值[2]


封装

什么是封装?

  • 对象代表什么,就要封装对应的数据,和对应的行为。

封装需要使用private关键字

  • 可以修饰成员变量和成员方法
  • 只能在本类中使用
  • 针对被private修饰的成员,如果需要被其他类使用,则要提供相对应的操作。
  • 即通过set() get()方法,方法用public修饰
public class GrilFriend {
    //1.类中的变量都要用private修饰
    private String name;
    private int age;
    //2.对每一个私有化的变量,提供set() get()方法。

    //3.set()方法对成员变量进行赋值,只需要赋值,不用返回值,返回值类型用void。
    public void setName(String a){
        name = a;
    }
    //4.get()方法对外提供成员变量的值,不需要接收值,无形参。同时对外提供值,方法的返回值类型要与成员变量的返回值类型一致。
    public String getName(){
        return name;
    }
    public void serAge(int b){
        if(b >= 18 && b <=50 ){
            age = b;
        }else{
            System.out.println("不是喜欢的类型");
        }
    }
    public int getAge(){
        return age;
    }
}
public class GirlFriendText {
    public static void main(String[] args) {
        GrilFriend gf1 = new GrilFriend();
        gf1.serAge(18);
        gf1.setName("小诗诗");

        System.out.println(gf1.getAge());
        String name = gf1.getName();
        System.out.println(name);
    }
}

就近原则和this关键字

在Java中对变量起名,需要起到见名知意的效果。在上面GrilFriend实例中形参a和形参b显然不符合这一要求。

那么我们可以改写成name和age。如下:

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

    public void setName(String name){
        //局部变量代表测试类中调用方法传递过来的数据
        //左边是成员变量的name
        this.name = name;
    }
   
    public String getName(){
        return name;
    }
    public void serAge(int age){
        if(age >= 18 && age <=50 ){
            this.age = age;
        }else{
            System.out.println("不是喜欢的类型");
        }
    }
    public int getAge(){
        return age;
    }
}

就近原则

public class GrilFriend{
     private int age;//0
    public void method(int age){
        int age = 10;
        System.out.println(age);//10,谁离我近就用谁
        System.out.println(this.age);//代表成员变量
    }
 
}

this

this的作用是区分成员变量和局部变量。

this的本质是方法调用者的地址值。

image-20240725152952420

图中method()调用者是s,所以this(001)=s(001)。

构造方法

格式

修饰类型 类名(参数){}

特点

  1. 方法名与类名一致

  2. 没有返回值类型,void也没有。

  3. 没有具体返回值,也就没有返回结果,没有return.

执行

  1. 创建对象时由虚拟机调用,不能手动调用。
  2. 每创建一次对象,就会调用一次构造方法。

空参构造

  • 如果没有写无参的构造方法,系统会提供默认的无参的构造方法。
  • 如果手动写了无参的构造方法,系统就不提供默认的构造方法。
public class Student{
    private String name;
    public Student(){
        System.out.println("吃饭了吗?");
    }
}
public class StudentText{
    public static void main(String[] args){
        Student s = new Student();
    }
}

结果:吃饭了吗?

有参构造

  • 在初始化对象时,可以同时给对象赋值。
  • 如果写了有参构造,无参构造器就没有了,需要自己写。
public class Student{
    private String name;
    private int age;
    public Student(String name,int age){
        this.name=name;
        this.age=age;
    }
    public void setName(String name){
        this.name= name;
    }
     public String getName(){
        return name;
    }
    //age脑补
}
public class StudentText{
    public static void main(String[] args){
        Student s = new Student("小诗诗",18);
        System.out.println(gf1.getname());
    }
}

两种构造方法的联系

  • 无参的构造方法和有参的构造方法虽然方法名相同,但是参数不同,这就是叫构造方法的重构。
  • 无论使用与否,都要手动书写无参的构造方法和带全部参数的构造方法。
  • 他们的作用是在创造对象时,由虚拟机调用,给成员变量初始化。

标准JavaBean

  1. 类名要见名知意
  2. 成员变量需要用private修饰
  3. 带有两个构造方法(无参和带全部参数)
  4. 对每个成员变量都写上get()和set()方法以及其他行为。

创建构造方法的快捷方式

  1. alt + (Fn) + insert ,选择 select none就创建空参构造;按住Shift点击最后一项全选,就是带全部参数的构造方法。
  2. getter and setter,选上所有的成员变量。
  3. 连接外网,File,settings,Plugins,搜PTG,这个插件可以一秒生成Javabean。

对象的内存图

image-20240725143531523

注意

  1. 遇到Student s = new Student();就会加载Student.class文件。
  2. 在Student类中没有对成员变量赋值,就不会显示初始化,而是默认初始化(name null,age 0)。没有写构造方法,就是空参构造。
  3. s.变量名或s.方法()可以看成地址值.变量名或地址值.方法()
  4. 当方法出栈后,没有变量指向堆空间,对象消失。
  5. 申明局部变量的意思是,对左边的变量申明空间。
  6. 当创建第二个对象时,不需要再加载.class文件
  7. 成员方法在堆空间中有自己的地址值,通过在堆中的地址找到方法区中的方法( study( ) )再进入栈中。

image-20240725151624824

  1. 其中要注意的是变量名 = null,null表示不存在的空间,一旦使用就会断开连接。

基本数据类型和引用数据类型

基本数据类型的定义:数值存储在自己的空间中,

引用数据类型的定义:变量存的是地址值,通过地址使用其他空间的数据。例如:数组

image-20240725152201089

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

image-20240725153658113


  1. 类用于描述一类事物,不要在类中赋值。创建对象后,再赋值。 ↩︎

  2. 基本数据类型: byte short int long 默认值:0 ;float double 默认值:0.0 ; boolean 默认值:false ;引用类型:接口 类 数组 String 默认值:null。 ↩︎

标签:String,构造方法,age,面向对象,public,变量,name
From: https://www.cnblogs.com/jjhdbk/p/18323400

相关文章

  • 模块3 面向对象编程高级 --- 第九章:实现接口
    第九章实现接口主要知识点1、接口的定义2、接口的声明3、接口的实现4、接口的应用学习目标掌握接口的定义、声明、实现以及使用方法。接口是一种特殊的类,允许包括变量、常量等一个类所包含的基本内容,可以包含方法。接口中的方法只能有声明,不允许......
  • C语言面向对象风格编程解惑-全局变量性能分析
    C语言面向对象风格编程解惑-全局变量性能分析如果你是CPP老手,但在软件开发过程中要求采用C语言作为主要语言,首先遇到的是各种设计模式不方便应用了,感到非常困扰,然后就是认命之后走向另外一个极端,常常会有过度使用全局变量和goto语句的问题。CPP既然是CWithClass,自然不会排斥面......
  • Java面向对象-04
    1.多态:多种形态向上造型/自动类型转换:超类型的引用指向派生类的对象能点出来什么,看引用的类型向下转型/强制类型转换,成功的条件只有如下两种:引用所指向的对象,就是该类型引用所指向的对象,实现了该接口或继承了该类强转时若不符合如上条件,则发生ClassCastException类......
  • Python类与面向对象编程
    大家好!今天我们将探讨Python中的类及其在面向对象编程(OOP)中的应用。面向对象编程是一种编程范式,它使用“对象”来模拟现实世界的事务,使代码更加结构化和易于维护。在这篇文章中,我们将详细了解类和实例的概念、'self'关键字的作用、魔法函数的定义以及构造函数和析构函数的用......
  • Java学习笔记(七)面向对象编程(中级部分)
    Hii,mJinXiang⭐前言⭐本篇文章主要介绍Java面向对象编程(中级部分)包、访问修饰符、封装、继承、super关键字、多态、向上(下)转型、equals、hashCode、断点调试等知识的详细使用以及部分理论知识......
  • 模块2 面向对象编程初级 --- 第六章:创建对象
    第六章创建对象主要知识点:1、类的实例化2、构造方法3、对象的使用4、对象的清除学习目标:根据定义的类进行实例化,并且运用对象编写代码完成一定的功能。本章对类进行实例化,生成类的对象,利用对象开始软件的设计过程,掌握对象的使用方法。6.1创建对象概......
  • 【7种面向对象设计原则】
    一、面向对象设计原则1.1、概述如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一。在面向对象设计中,可维护性的复用是以设计原则为基础的。每一个原则都蕴含一些面向对象设计得思想,可以从不同的角度提升一个软件系统结构的设计水平。最常......
  • 从零开始学Java(超详细韩顺平老师笔记梳理)08——面向对象编程中级(上)IDEA常用快捷键、包
    文章目录前言一、IDEA使用常用快捷键模板/自定义模板二、包package1.基本介绍2.包的命名规范3.常用的包和如何引入4.注意事项和细节三、访问修饰符(四类)四、封装Encapsulation(重点)1.封装介绍2.封装步骤3.快速入门4.封装与构造器五、继承(重点)1.为什么需要继承2......
  • Java入门基础-10面向对象高级
    Java入门基础-10面向对象高级本章知识点总结于黑马程序员的视频课程:《Java入门基础课程》,是对上课做的笔记Java入门基础课程视频地址上一章:Java入门基础-09综合案例ATM系统目录Java入门基础-10面向对象高级前言staticstatic修饰成员变量static修饰成员变量的应用场......
  • 面向对象的三大特征
    面向对象的三大特征--xzmeddx一、为什么使用面向对象编程思想进行软件开发1.开发时间短,效率高,可靠性高,所开发的程序更强壮。2.应用程序更易于维护、更新和升级。二、封装、继承和多态1.封装1)定义:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。2)封装的分类和好处:......