Java千百问_05面向对象(001)_类、对象到底有什么秘密

简介:

1、类、对象的概念是什么

Java是目前应用最为广泛的面向对象特的语言,它具有以下基本概念:

  • 对象
  • 方法
  • 抽象化
  • 多态性
  • 继承
  • 封装

我们首先看看类和对象的概念。

类是一个模版。是一个可以定义一类具有相同属性、行为的模版。 
例如:狗是一个类,它具有四肢、尾巴、头、脊椎等属性,具有吠叫、吃、繁殖等行为。

对象

对象是一个具体实例。根据是一个类的具体实例。 
例如:我家对门养的一只狗,具体到了某一只。

2、Java如何定义类

类的定义如下︰

public class Dog{
   String breed;
   int age;
   String color;

   void barking(){
   }

   void hungry(){
   }

   void sleeping(){
   }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

类有以下关键点:

  • 1、类可以包含以下任意类型的变量。 
    局部变量、实例变量、类变量。了解三者详情看这里:局部变量、类变量、实例变量有什么区别
  • 2、类可以有任意数量的方法。 
    在上面的例子中,该类拥有barking(), hungry() 和 sleeping()三个方法。
  • 3、类的构造函数 
    有关于类的讨论,其中最重要的部分之一是构造函数。每个类都有一个构造函数,如果我们不明确地写一个构造函数的类,Java编译器生成一个默认的构造函数(无参数的)。 
    在每次创建一个类的新对象时,至少有一个构造函数被调用,在这里会按照不同需求初始化一些对象内部的属性。 
    构造函数的主要规则是,他们应该具有相同的名称作为类。一个类可以有多个构造函数(当然每一个的参数都应该不同)。

构造函数的例子如下︰

public class Puppy{
   public Puppy(){
   }

   public Puppy(String name){
      // This constructor has one parameter, name.
   }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Java还支持单实例类,在这里能够创建的类只有一个实例。更多单例模式看这里:单例模式(Singleton)

3、java中如何创建对象

如前面提到的,类提供的是模版,所以基本上一个对象是根据一个类创建的。 
在Java中,使用关键字new创建新的对象。

根据类创建对象有三个步骤: 
声明: 变量声明,一个变量名的对象类型。 
实例化: 使用new关键字创建对象。 
初始化: 关键字new后跟调用一个构造函数。初始化新的对象。

创建对象的实例:

public class Puppy{

   public Puppy(String name){
      // This constructor has one parameter, name.
      System.out.println("Passed Name is :" + name );
   }
   public static void main(String []args){
      // Following statement would create an object myPuppy
      Puppy myPuppy = new Puppy( "tommy" );
   }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

将产生以下结果:

Passed Name is :tommy

4、如何访问对象的实例变量和方法

实例变量和方法是通过刚才创建的对象来访问的。 
要访问一个实例变量和方法如下:

/* First create an object */
ObjectReference = new Constructor();

/* Now call a variable as follows */
ObjectReference.variableName;

/* Now you can call a class method as follows */
ObjectReference.MethodName();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

例子:

public class Puppy{

   int puppyAge;

   public Puppy(String name){
      // This constructor has one parameter, name.
      System.out.println("Passed Name is :" + name );
   }
   public void setAge( int age ){
       puppyAge = age;
   }

   public int getAge( ){
       System.out.println("Puppy's age is :" + puppyAge );
       return puppyAge;
   }
   public static void main(String []args){
      /* Object creation */
      Puppy myPuppy = new Puppy( "tommy" );

      /* Call class method to set puppy's age */
      myPuppy.setAge( 2 );

      /* Call another class method to get puppy's age */
      myPuppy.getAge( );

      /* You can access instance variable as follows as well */
      System.out.println("Variable Value :" + myPuppy.puppyAge );
   }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

将产生以下结果:

Passed Name is :tommy 
Puppy’s age is :2 
Variable Value :2

原文地址:http://blog.csdn.net/ooppookid/article/details/51161448

相关文章
|
3天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
27 3
|
2天前
|
Java
Java基础之对象的引用
Java基础之对象的引用
5 0
|
5天前
|
安全 Java 机器人
《Java 简易速速上手小册》第2章:面向对象的 Java(2024 最新版)
《Java 简易速速上手小册》第2章:面向对象的 Java(2024 最新版)
19 0
|
6天前
|
Java
Java中如何克隆一个对象?
【4月更文挑战第13天】
15 0
|
7天前
|
Java 编译器
Java Character 类
4月更文挑战第13天
|
7天前
|
Java API 数据库
深入解析:使用JPA进行Java对象关系映射的实践与应用
【4月更文挑战第17天】Java Persistence API (JPA) 是Java EE中的ORM规范,简化数据库操作,让开发者以面向对象方式处理数据,提高效率和代码可读性。它定义了Java对象与数据库表的映射,通过@Entity等注解标记实体类,如User类映射到users表。JPA提供持久化上下文和EntityManager,管理对象生命周期,支持Criteria API和JPQL进行数据库查询。同时,JPA包含事务管理功能,保证数据一致性。使用JPA能降低开发复杂性,但需根据项目需求灵活应用,结合框架如Spring Data JPA,进一步提升开发便捷性。
|
8天前
|
存储 Java
Java基础教程(7)-Java中的面向对象和类
【4月更文挑战第7天】Java是面向对象编程(OOP)语言,强调将事务抽象成对象。面向对象与面向过程的区别在于,前者通过对象间的交互解决问题,后者按步骤顺序执行。类是对象的模板,对象是类的实例。创建类使用`class`关键字,对象通过`new`运算符动态分配内存。方法包括构造函数和一般方法,构造函数用于对象初始化,一般方法处理逻辑。方法可以有0个或多个参数,可变参数用`类型...`定义。`this`关键字用于访问当前对象的属性。
|
12天前
|
Java Shell
Java 21颠覆传统:未命名类与实例Main方法的编码变革
Java 21颠覆传统:未命名类与实例Main方法的编码变革
13 0
|
12天前
|
Java
Java 15 神秘登场:隐藏类解析未知领域
Java 15 神秘登场:隐藏类解析未知领域
16 0
|
6月前
|
Java 编译器
【Java学习笔记】 对象和类
【Java学习笔记】 对象和类