java类和对象的基础特性-1

简介: java类和对象的基础特性

       前言:

       在java语言中经常被提到的两个词是类和对象。它是面向对象的基本。实际上,类可以看做是对象的载体,也就是说类是对象所具有的属性,也可以说类是定义对象的基本规范。

       1、面向对象概述


由来:早期的计算机编程是基于面向过程的方法,例如实现算术运算1+1+2 = 4,通过设计一个算法就可以解决当时的问题。但是随着软件规模越来越庞大,处理过程越来越复杂,这种面向过程的结构化语言的弊端也就逐渐暴露出来,开发周期也越来越长,产品质量不尽人意。这时人们开始引入另一种开发思想--面向对象。

          一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。同时,面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木一样快速开发出一个全新的系统。面向对象是指一种程序设计范型,同时也是一种程序开发的方法。对象是类的具体化实现。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。


       2、类和对象

       1、对象

       现实世界中,任意一个物品都可以看做是一个对象。例如,我们写代码常用的电脑,我们日常联系使用的手机,都是一个对象。对象是事物存在的实体,因为是实体,那么它一定会具有一些物理或者化学属性,就拿 一个人来举例,一个人所具有的可能的属性有:五官,身高,体重,血型等等。只有这些属性并不能成为一个完整的人,因为还具有许多行为属性,例如唱、跳、rap、打篮球等等,根据对象的实体化,我们将其属性划分为静态部分和动态部分。


举例:


注意看这个篮球巨星,仔细分析可以知道


静态属性有 》   角色偶像练习生
                         发型中分
                         穿着背带裤

                               .........

动态属性有  》  胯下运球铁山靠 ........ 等一些专业动作指导。

       而在计算机世界中,我们可以根据对象在现实世界中所具有的属性将其抽象出来,在识别这个对象的属性后,这个对象就被定义完成了,然后可以根据这个对象的属性来制定具体的解决问题的方案,这就是对象。

       2、类

       在我们现实生活中有很多事物,就比如手机,有很多品牌,比如华为,小米,等等。虽然是不同品牌,但是他们都离不开手机这一类事物,他们都具有像处理器,屏幕,内存,摄像头等静态属性,也具有打游戏,拍照,聊天等动态属性。所以我们就将这具有相同特征的一类事物称为



在java语言中,类中对象的动态属性是以方法的形式定义的,对象的静态属性是以成员变量的形式定义的,所以类包括对象的静态和动态属性。

       3、类的定义格式

// 创建类
//class ClassName{ 
//    field;     字段(属性) 或者 成员变量
//    method;     行为 或者 成员方法 
//}
 
// 例如定义手机类
class Phone{
    String SizeOfPhone;
    String CpuModel;
    int DateOfManufacture;
    //.......等等静态部分
    public void function_TakeAPicture(){
        System.out.println("正在拍照");
    }
    // ......等等动态部分
}


       根据上面的代码,使用者可以用class来定义一个手机对象(这里为了和对象名进行区分,推荐使用大驼峰的形式来书写类名),Phone为类名,同时在Phone这个类中定义了他的属性,我们可以看到,静态属性是用变量来进行定义的,动态属性是以方法来定义的:


       1、成员变量(静态部分)

       例如,手机尺寸,我们用字符串来定义:String SizeOfPhone;   SizeOfPhone 为变量名,也可以是java中其他合法数据类型:

例如: Boolean类型  等等。我们可以为其设置初始值,String SizeOfPhone  = "长 x 宽 x 高 " ;

但也可以不初始化,不初始化就会自动初始化为默认值,Boolean类型的默认值为 false,int  float等默认值为其对应的0值,int为0,float为0.0等,String类型默认为 null,等。


       2、成员方法(动态部分)

       在java语言中,使用成员方法对应于类的对象的行为,就像上述手机这个类中的华为手机拍照这个行为一样,其定义成员方法的格式如下:

权限修饰符  返回值类型   方法名 ( 参数列表) {

       .........   //方法体

      return  返回值 ;  // 无返回值则返回类型为  void

}


       一个成员方法,可以有参数,这个参数可以是一个对象,也可以的是其他合法的变量,返回值可有可无,如果需要返回值,则在需要的地方使用return 关键字,使用到这个关键字的时候,方法的执行将被终止。


       注:如果一个类的方法中如果有与成员变量 同名的局部变量,则方法的执行以局部变量来进行


       3、实例化

       了解什么是类,什么是对象后,就该了解一下什么是实例化。


我们使用上面的方法创建一个类之后,就有了我们所定义的类的属性,然后使用这个类去创建一个对象,这个过程就称为实例化,例如,我们定义了一个手机类,那么我们就可以使用这个手机类创建一个名为华为手机的具体对象。


       在java中 采用 new 关键字来实例化生成对象。

我们这里拿一个狗类来举例      :

f2a5821a6a381a4e231ea49f795c2548_9e617eae47044afab481594f6126b93f.png

 new关键字的使用部分: PetDog  dog1  =   new  PetDog();

                                         PetDog  dog2  =   new  PetDog();

     这里就实例化了两个PetDog的对象:dog1和dog2 。(可以通过英文字符中的点好' . '来访问对象的中的成员)

                               

       3、权限修饰符

       在初学java的时候,不免会看到public,private等修饰符,那么这些关键字都有些什么作用呢,经过学习我们可以了解到,这些都是java中的权限修饰符,主要包括private, public, protected,这些修饰符控制对类和类的成员的访问。


       1、private

如果一个类的成员被private修饰,则该成员只能在其所在的类中访问:

class Dog{
    private String name;
    int age;
    public void bark(){
        System.out.print(name + "is barking!");
    }
}


这里我们在main函数里面试试访问他:结果是显示在编译的时候出现了问题

java: name 在 Dog 中使 private 访问控制 private修饰一个类成员变量无法直接同一个包的不同类中访问

在其后面要讲到的继承的子类中也是不可用的(这个被private修饰的父类成员,可以被继承但是无法访问):

class Dog{
    private String name;
    int age;
    public void bark(){
        System.out.print(name + "is barking!");
    }
}
class specialDog extends Dog{
    public void func(){
        System.out.println("the sepcial dog");
    }
}
public class Test {
    public static void main(String[] args) {
        specialDog dog1 =new specialDog();
        dog1.name = "修勾";
    }
}


我们定一个Dog父类,然后使用specialDog来继承这个Dog父类,然后创建一个specialDog的对象并对父类中的name进行访问:结果同样如下。

无法访问所继承的父类中的private修饰的成员

除此之外,被private修饰的成员对其他包的类也是不可见的:编译出错。

     父类和子类在不同的两个包

设置private可以避免用户直接访问它,从而保证数据的安全性,如果非要在外部调用这个类中被private修饰的成员,可以在这个类中开放一个指向这个private修饰的成员的接口方法,


       2、public

类中被public修饰的成员,除了可以在本类访问这个成员,在其他类和子类,或者其他包中访问。

此处的案例在private中可以类比,不再一一列举。


       3、protected

从上面的内容可以得知,类中private修饰的成员不能夸包访问,而public又可以给到最大权限,可以夸包访问,在不同的类中也可以使用,两种修饰符都太极端,于是就给出了一个中间值,他就是protected类中被protected修饰的变量可以在同一包中的同一类访问,也可以在同一包中的不同类访问,同时还可以在不同包中的子类访问。


       4、default

如果不加修饰符,则默认给出defualt修饰符,defualt修饰符默认只能同一包中的同一类和同一包中的不同类访问。即只有同一个包中的类可以调用这个类的成员。


java类和对象的基础特性-2

https://developer.aliyun.com/article/1515755

目录
相关文章
|
2月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
356 0
|
2月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
123 4
|
2月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
213 5
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
199 1
|
2月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
254 1
|
2月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
205 0
|
2月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
225 1
|
2月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
320 5
|
3月前
|
Java API 数据处理
Java新特性:使用Stream API重构你的数据处理
Java新特性:使用Stream API重构你的数据处理
|
3月前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
267 101