Java|面向对象之类和对象

一、类和对象的引入

  1. 类是一种抽象的数据类型,是对现实中事务的描述,但并不能代表某一具体的事物。
    比如我们可以说猫是一个类,但是我不能说我自己养的猫kitty是一个类。
  2. 如上所述,我自己养的猫kitty可以说是一个对象,对象是抽象概念的具体实例,例如kitty这只真实存在事物是对猫这个抽象概念的一个具体表现。
  3. 类是一个模版,描述一类对象的行为和状态
    比如linuxos,macos,winos三个可以看作是一类对象
    对这些对象抽象出其共性,如name,version,开机方法,关机方法等
    就可以抽象出操作系统类。

二、面向对象

  1. 什么是面向对象?
  • 面向对象就是把数据及对数据的操作方法放在一起,作为一个相互依存的整体,即对象。再把同类对象抽象出其共性,形成类。
  • 类中的大部分数据,只能通过本类中的方法进行处理。
  • 类可以通过外部接口与外部发生联系
  1. 面向过程和面向对象的区别?
  • 面向过程的思想是分析出问题的步骤,然后再一步一步的把步骤给实现。
    先定好main函数,再一步一步实现main函数中所要用到的其他函数
  • 面向对象是把构成问题的事务抽象成程序设计中的对象,是一种自下而上的设计,即先设计组件,再进行拼装。
  1. 面向过程编程和面向对象编程的区分实例
    现在我们有一个问题:我在雨天撑伞避雨。
  • 如果按照面向过程的编程思想,我们解决淋雨问题的步骤是这样的
    • 下雨
    • 打开伞
    • 挡雨
    • 雨停
    • 收伞

然后每一个步骤写一个函数去实现

  • 而利用面向对象的编程思想,我们则是先从雨天撑伞避雨这个具体问题中抽象出三个对象:我,伞,雨(me,umbrella,rain)
    这三个对象里分别有一些成员变量和成员方法
    比如:
    “我”里面可以含有以下的成员方法

    • 撑伞
    • 收伞

    “伞”这个对象里可以含有如下成员方法

    • 挡雨
    • 挡太阳

    “雨”这个对象里可以含有以下成员方法

    • run
    • stop

构造出对象后,我们再根据实际问题对对象进行组合,比如本题,我们的解决方法是

  • rain.run
  • me.撑伞
  • rain.stop
  • me.收伞

三、类的创建与对象的实例化

  1. 类的创建 修饰符 + class +类名 {}
  • 如创建一个学生类:
public class Student{
   String name;
   int age
   
   public void study(){
   	System.out.println("学生在学习")
   }
}
  1. 类的实例化/对象的创建 类名 + 对象名 = new 类名();
  • 如实例化一个学生类
public class Test{
public static void main(String[] args){
  Student Adam = new Student();
  Student Vincent = new Student();
  
  Adam.name = "亚当";
  Adam.age = 23;
  
  Vincent.name = "文森特";
  Vincent.age = 24;
	}
}

4、创建对象时的内存分析

创建对象时的内存分析

5.构造器/构造方法

  1. 构造器就是和类名相同但无返回类型的方法。用于将对象的实例化
  • 示意代码
 //无参构造
public class Person{
   String name;
}

->无参构造的调用

public class Test{

	public static void main(String args[]){
	    Person person = new Person();
}
  • 如代码所示,在Person类中,并没有定义Person方法,但在调用时,却用到了Person(),这是因为在类被创建出来时,会默认创建一个当前类的无参构造,用于创建对象。
 //有参构造
public Person(String name){
	this.name = name;
}

->调用有参构造时,自行传参

public class Test{

	public static void main(String args[]){
	    Person person = new Person("Vincent")
            System.out.println(person.name);
            //至此会输出Vincent
            Person person2 = new Person();
            System.out.println(person2);
            //至此会报错,因为一旦定义了有参构造,就必须显式定义无参构造。
}
  1. 总结
  • 构造器也叫构造方法
  • 构造器的作用是实例化对象,使用new关键字实例化对象的本质是调用构造器
  • 构造器的定义需注意
    • 和类名相同
    • 没有返回值
  • 在有参构造时,this关键字.之后的变量是指的成员变量,=后的变量是传参的变量
  • 一旦定义了有参构造,则默认的无参构造自动失效,若要使用无参构造则必须显式定义
posted @ 2021-09-11 14:55  全辣柯基  阅读(65)  评论(0编辑  收藏  举报