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

面向对象

时间:2023-01-01 13:45:16浏览次数:36  
标签:name person Person 面向对象 new public String

什么是面向对象

以类的方式组织代码,以对象的组织(封装)数据

封装 - 继承 - 多态

对象-具体 —— 类-抽象

设计:先有多个对象,再将对象共性抽象成类

代码:先有抽象类,再new具体对象 --先造模子然后就可以随意印姜饼人

关于对象的值传递

  • 对于基本类型的实参 int/String 等 方法通过值传递不直接修改实参本身
//值传递
public class Demo02 {
    public static void main(String[] args) {
        int a = 1;

        System.out.println(a);  //1
        Demo02.change(a);
        System.out.println(a);  //1
        //change()方法并没有作用于实参a上,只有a的值作为形参传入方法中

    }

    public static void change(int a){
        a = 10;
    }
}
  • 对于由类new出的对象,方法也是值传递,但形参指向具体对象,可以修改对象的属性
//引用传递,本质还是值传递,Java只有值传递 -- 在于对象+内存
public class Demo03 {
    public static void main(String[] args) {
        //new一个Person对象
        Person person = new Person();

        System.out.println(person.name);//null 默认初始化
        Demo03.change(person);
        System.out.println(person.name);//Ashen 修改成功

    }

    public static void change(Person person){
        person.name = "Ashen";
        //此处的person是一个对象:指向-->Person person = new Person();
        //是具体的人,可以改变属性
    }
}

//定义一个Person类,赋予一个属性name
class Person{
    String name;
}

类的构造器

无参构造器默认为隐式定义,也可显示定义

当显示定义一个有参构造器后,相应类的无参构造器必须也显示定义

定义Person类

public class Person {
    //一个类 一定存在一个与类名同名的方法 Person() --> 构造器
    //快捷键alt+insert可快速生成构造器
    //1.方法名与类名相同  2.无任何返回值

    public Person(){   //显示定义无参构造
        //作用1:使用new关键字,本质是在调用构造器
        //作用2:初始化对象的属性
        this.name = "zz";
    }

    //一旦定义有参构造,无参构造必须显示定义
    public Person(String name){ //有参构造
        this.name = name;
    }
    public Person(String name, int age){
        this.name = name;
        this.age = age;
    }

    String name;
    int age;

}

实例化Person类

public class Application {
    public static void main(String[] args) {

        //new 实例化一个对象
        Person person = new Person();

        System.out.println(person.name); //zz

        Person Wu = new Person("zxc");
        System.out.println(Wu.name);  //zxc
    }
}

标签:name,person,Person,面向对象,new,public,String
From: https://www.cnblogs.com/Ashen-/p/17018004.html

相关文章

  • Python面向对象原理分析-元类MetaClass
    metaclass元类1.前戏对象是类实例化的结果classFoo(object):pass#第1步:调用Foo的__new__方法创建空对象。#第2步:调用Foo的__init__方法对对象进行初始化。o......
  • JAVA零基础小白上手教程day08-JAVAOOP面向对象
    day08-JAVAOOP课程目标1.【理解】什么是接口2.【掌握】接口的定义格式3.【掌握】接口的使用4.【理解】接口的成员特点5.【理解】类和接口抽象类和接口之间的关......
  • Python学习六:面向对象编程(上)
    文章目录​​前言​​​​一、面向对象编程:​​​​1.oop[objectorientedprogramming]是一种python的编程思路​​​​2.解释​​​​3.面向对象和面向对象编程​​......
  • Python学习八:面向对象编程(下):异常、私有等
    文章目录​​前言​​​​一、私有化属性​​​​1.引入私有化属性​​​​2.语法(定义)​​​​3.私有属性的特性​​​​4.使用的场景​​​​5.最后小结​​​​二、......
  • Python学习七:面向对象编程(中)
    文章目录​​前言​​​​一、析构函数​​​​二、对象三大特征​​​​1.封装​​​​2.继承​​​​3.多继承的问题​​​​4.重写父类方法​​​​5.调用父类方法......
  • 第六章《类的高级特性》第6节:面向对象三大特征
    ​面向对象编程具有三大特征,分别是:封装、继承和多态。一、封装​封装就是隐藏一切可隐藏的东西,只向外界提供最简单的操作接口。举例来说:电视机的工作原理很复杂,为完成这些......
  • Python 面向对象
    目录Python面向对象方法没有重载方法的动态性私有属性和私有方法(实现封装)@property装饰器属性和方法命名总结Python面向对象方法没有重载在其他语言中,可以定义多个......
  • Python 面向对象进阶
    目录Python面向对象进阶面向对象三大特征介绍继承语法格式类成员的继承和重写查看类的继承层次结构与根类属性重写__str__()方法Python面向对象进阶面向对象三大特征......
  • Java面向对象:子类与继承
    今天听java课程感觉难度突然增加,因此注意上课记录关键笔记,提醒自己回顾。JAVA子类与继承子类与父类问题:哪些父类的变量与方法可被子类继承?与访问权限有关前提知识:jav......
  • Java基础之面向对象——类、对象、方法
    类与对象    类的概念我们平时已经听过很多了。人类、鸟类、鱼类...所谓类,就是对一类事物的描述,是抽象的、概念上的定义,比如鸟类,就泛指所有具有鸟类特征的动物。比......