Java学习笔记(三)--类与对象

类与对象

概要
1.面向对象程序设计是现在主流的程序设计方法之一,有三个主要特征:封装性、继承性、多态性。
2.类与对象的关系:类是对象的模板,对象是类的实例,类只能通过对象才可以使用。
3.类的组成:成员属性(field)和方法(method)。
4.对象的实例化格式:类名称 对象名称 = new 类名称(),关键字new用于开辟内存空间。
5.如果一个对象没有被实例化而直接使用,则使用时会出现空指向异常(NullPointerException)。
6.类属于引用数据类型,进行引用传递时,传递的是堆内存的使用权(一块堆内存可以被多个栈内存所指向,一块栈内存只能保存一块堆内存的地址)。
7.类的封装性;通过private关键字进行修饰,被封装的属性不能被外部直接使用,而只能通过setter()或getter()方法完成。只要是属性,类中的全部属性必须全部封装。
8.构造方法可以为类中的属性初始化,构造方法与类名称相同,无返回值类型声明。如果在类中没有明确的定义构造方法,则会自动生成一个无参的、什么都不做的构造方法。在一个类中的构造方法可以重载,但每个类都必须至少有一个构造方法。
9.在Java中使用this关键字可以表示当前对象,通过this.属性可以调用本类中的属性,通过this.方法() 可以调用本类中的其他方法,也可以通过 **this()**的形式调用本类中的构造方法,但是调用时要求放在构造方法的首行。
10.使用static声明的属性和方法可以由类名称直接调用,static属性是所有对象共享的,所有对象都可对其进行造作。

面向对象(Object Oriented,OO)
是现在最为流行的软件设计与开发方法之一,而Java语言本身最大的特点便在于其属于面向对象的编程语言,其最为核心的基本成员:类、对象。

在面向对象设计之前,广泛采用面向过程,面向过程只是针对自己来解决问题。面向过程的操作是以程序的基本功能实现为主,不考虑项目的维护性。面向对象更多的是进行模块化设计。可以重复使用每一个模块。所以面向对象开发设计更加的标准。

面向过程和面向对象区别
例如两名学生,小红和小明要整理学习的文件,他们有各自的做法:

小明(面向过程):将所有的文件,试卷啊,作业,笔记等等全部统一放到了一个文件夹里,没有分类,各个学科的文件混在一块,想要再找某一学科的文件或者修改删除等操作就要大费周折。没有标准化,也不通用。

小红(面向对象 ):先将文件学科分类:语文的(类)、数学的(类)、英语的(类)等等分开整理到不同的文件夹中,再在各个学科中的文件进行整理:试卷(对象),作业(对象),笔记(对象)等等,想要对某一个文件进行增删改查就要容易得多,同时这种方法也能够多次使用。这样的设计更加具备通用性和标准化。

面向对象程序设计的三个主要特性
封装性;继承性;多态性

封装性
是面向对象方法所遵循的一个重要原则。具有两种含义:一是指把对象的成员属性和行为看成一个密不可分的整体,将他们封装在一个不可分割的独立单位(对象)中。另一个是“信息隐蔽”,将不需要让外界知道的属性和行为隐藏起来。有些属性和行为可以被外界查看但不能修改。

继承性
是面向对象的方法中的重要概念,用以提高软件开发效率的重要手段。
继承拥有反映事物一般特性的类,其次在其基础上派生出反映特殊事物的类。如汽车的类,而客车的类则是继承与汽车的类,它不仅有汽车类的属性和行为,同时还有自己特有的属性和行为。
优点:大大提高代码的可重复使用性,提高软件的开发效率,降低错误产生,也方便程序进行修改和扩充。
缺点:Java语言不支持多继承,而Java语言通过接口(Interface)的方式支持多继承。

多态性
是面向对象程序设计的一个重要特征。是指允许程序出现重名现象。
Java语言中含有方法重载和对象多态两种形式的多态。

方法重载:在一个类中,允许多个方法使用同一个名字,但方法的参数不同,完成的功能也不同。

对象多态:子类对象可以与父类对象进行相互的转换,而且根据子类的不同完成的功能也不同。

类与对象
类是对象的模板,对象是类的实例。

类的基本组成单元:成员属性和方法。
成员属性(field):主要用于保存对象的具体特征。
方法(method):用于描述功能。

类与对象的定义

class 类名称{
   
    [访问修饰符] 数据类型 成员属性(变量);
    ...
    public 返回值的数据类型 方法名称(参数类型 参数1 ,参数类型 参数2...{
   
    程序语句;
    [return 表达式;]
  }
}

eg:`

class Person{
      //定义一个类
   String name ;   //成员属性
   int age;
   
   //定义方法
   public void tell(){
   
   System.out.println("姓名:" + name + ",年龄:" + age);
   }
}
注:由对象调用方法定义时不加static


声明并实例化对象: 
类名称  对象名称  = new  类名称();

分布定义:
声明对象: 类名称 对象名称 = null ;
实例化对象: 对象名称 = new 类名称();

调用类中成员属性:对象.成员属性
调用类中方法: 对象.方法()

public class JavaDemo{
   
   public static void main(String args[]){
   
        Person per = new Person();
        per.name = "张三";
        per.age = 55 ;
        per.tell();
  }
}

运行结果:
姓名:张三,年龄:55

对象内存分析
Java中类属于引用数据类型,所有引用类型数据的使用都需要通过关键字new来开辟内存空间,对象拥有内存空间后才能实现成员属性信息的保存,其最为重要的内存有两块:

【heap】堆内存:保存对象的具体信息。
【stack】栈内存:用于保存相应堆内存的地址。

未完待续。。。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务