Java入门第二章第1节:Java类与对象 三大特性与类 实验+图解讲解

简介

这一期开始Java第二章的课程,主要有类、对象、static 关键字、this 关键字、包、访问权限这六个知识

👉至于为什么写这些东西,原因有很多,正是出于这样那样的初心,讲解的课程全都是免费开放的,如有讲错的地方欢迎读者指正!

那我们今天就开始Java第二章!


一、编程语言的几个发展阶段

1、面向机器语言

面向机器 的语言— 低级语言 ,是计算机处理信息的早期语言
机器语言
l 特点:程序中的 指令是由 0 1 组成 的序列,它不需要被编译和转换就能够被 CPU 直接使用。

例如:

(计算机组成原理一书会深入学习,这里不要求掌握)

汇编语言
特点:用带 符号 助记符 的指令和地址代替二进制代码, 和机器指令 一一对应 对机器的依赖性仍很强

例如:

2、面向过程语言

如: C 语言、 Fortran 语言
面向过程 的语言, 高级语言 ,接近人的“自然语言”
特点:程序通常由若干“块”( 过程 / 函数 )组成,每个块负责完成独立的功能

 

采用 面向过程的编程思想
程序 = 算法 + 数据
优点:
流程清晰
执行效率比面向对象程序高
适于编写数据处理类程序及较小程序 ,如:算法。多用于底层
缺点:
处理复杂问题时,逻辑混乱
可维护性较差

3、面向对象语言

如: Java 语言、 C++ 语言
高级语言, 更加符合人的思维模式
特点:
封装
继承
 多态

采用 面向对象的编程思想
一切都是对象
程序 = 对象 + 消息
优点:
高可维护性、可扩展性、可复用性、健壮性
适于编写复杂的、较大的程序
缺点:
执行效率较低

二、Java面向对象三大特性

1、封装性

数据和对数据的操作封装在一个对象 中,并且对对象的使用者 隐藏数据的实现过程
例如:卡车、公共汽车、轿车等可以抽象出其共性:
属性:可乘人数、运行速度、功率、油耗、自重、轮子数目
行为(功能):加速、减速、刹车、转弯

将这些特性封装在一起,用类描述

class Vehicle  {      //一个类就是一个class文件,(文件类型)即" ***.java "的文件

      int   number;

      double  speed;

  int  power;

  double  oilwear;

  double  weight;

  int   wheel; //以上这些就是它的内部数据,外边其他的文件调用这个类不需要知道里面啥

  public void speedUp(double speed){ ……}

  public void speedDown(double speed){……}

  public void brake(){……}      //这些就是它对数据的操作(可以理解为函数一样的东西)

  ……

}

这是外部对这个类的使用方式:

2、继承性

通过抽象,抽取出某一类的多个对象的 共同特性 ,形成“类”。 比如上例中的“车”类
子类可以继承父类的属性及功能,并能够扩展
例如:公共汽车和轿车都属于“车”这一类型,并且具有“车”的所有属性和行为,可以通过继承机制实现。同时又可以增加子类自己独有的属性和行为。

抽象具体化如👇:

外部是这样的👇:

3、多态性

方法的多态 :多个操作(方法) 可具有相同的名字,但 方法接收的参数必须不同
继承的多态 同一个操作被不同类型对象调用时,可产生不同的行为
对象的 上转型对象

例如👇:

使用的时候是这样的👇:

就是类的内部操作(函数),可以同名,但具体操作要看给这个函数的参数是什么样的,系统会自动识别这些参数的类型,从而执行相应的操作。

三、Java的类

(这一部分相对抽象一些,学习的时候得慢点看)

1、类的概念

什么是类?
类是组成 Java 程序的基本要素
封装 了一类对象的属性和方法;
类是用来 定义对象的模板
类的实现包括两部分:
类声明
类体

类的第一个部分👇: 

 

类的第二个部分👇: 

2、类 声明的形式

[public] [abstract | final] class 类名称

    [extends 父类名称

    [implements 接口名称列表]

  { 

  成员变量声明及初始化;

       成员方法声明及方法体;

  }

3、类体的内容

由两部分构成👇

变量定义 :用来刻画属性;

                —方法定义:用来刻画功能

例如:

class Lader  {  

       float above,bottom,height,area;      //变量定义部分

       float computerArea()   {    //方法定义部分

           area=(above+bottom)*height/2.0f;

           return area;

       }

       void setHeight(float h)   {    //方法定义部分

           height=h;

      }

}

 

练习 :定义钟表类  思考:该类封装了时分秒状态属性和设置时间、显示时间的功能方法
public class  Clock
{ 	 // 成员变量
    int hour ;
    int minute ;
    int second ;

   // 成员方法
   public void setTime(int newH, int newM, int newS)
   {  
		hour=newH ;  
      	minute=newM ;  
      	second=news ;  
   }
   public void showTime()
   { 
		System.out.println(hour+":"+minute+":"+second);
   }
}

4、成员变量和局部变量

成员变量 变量定义部分 定义的变量;
局部变量 方法体中 定义的变量和方法的 参数
例:找出下面类中的成员变量和局部变量
class Lader  {   
     		float above,bottom,height,area; //这些都是成员变量
     		float computerArea()   { 
				System.out.println(area);   
         		float area =(above+bottom)*height/2.0f;//area是局部变量
         		return area;
    		} 
     		void setHeight(float h)   {    //h是局部变量
         		height=h;       //height是成员变量
    		}
}

注意👉: 

成员变量和局部变量的类型可以是 Java 中的任一类型,包括基本类型和引用类型。

 

成员变量在整个类内都有效;局部变量只在定义它的方法内有效
成员变量与其在类体中的书写位置无关,但不提倡将成员变量定义分散开

 

成员变量分为两种类型:
实例成员变量 :简称“ 实例变量 ”,无“ static” 修饰
类变量 :或称“ 静态变量 ”, 有“ static” 修饰

例如👇:

静态变量:即该类私有的,别的类不能直接访问也不能改变它的值,使用权和解释权归所在的类

对成员变量的操作只能放在方法中,在定义类的成员变量时可以同时赋初值,

例如👇:

 

局部变量在使用之前必须初始化或者赋值,否则无法使用

例如👇:

 

如果局部变量与成员变量名称相同,则:
成员变量被隐藏(即在该方法中,成员变量
功能失效

例如 👇:

public class Puppy {
    String name = "旺财";
    void dogBite() {
        String name = "泰格";
        System.out.println(name + " ,咬他!");
    }
}

public class Main {
    public static void main(String[] args) {
        Puppy d = new Puppy();
        d. dogBite();
    }
}

运行结果是👇:

如果方法参数与成员变量名称相同,则:成员变量被隐藏

例如👇:

public class Puppy {
    String  name = "旺财";
    void dogBite( String  name )   {
        System.out.println( name + " ,咬他!" );
    }
}

Main函数是:

public class Main {
    public static void main(String[] args) {
        Puppy d = new Puppy();
        d. dogBite("泰格 ");
    }
}

运行结果为👇:

 

当方法的局部变量、方法参数与成员变量的名称相同时,如果想调用成员变量,必须使用“this关键字

其中 •this代表调用该方法的当前对象

例如👇:

public class Puppy {
    String  name = "旺财";
    void dogBite( )   {
        String  name = "泰格";
        System.out.println(    name       + " ,咬他!" );
    }
    void   dogBite ( String  name )   {
        System.out.println(    name       + " ,咬他!" );
    }
}
public class Main {
    public static void main(String[] args) {
        Puppy d = new Puppy();
        d. dogBite();
        d. dogBite("泰格");
    }
}

运行结果为👇:

把this加上后👇:

public class Puppy {
    String  name = "旺财";
    void dogBite( )   {
        String  name = "泰格";
        System.out.println(    this.name       + " ,咬他!" );
    }
    void   dogBite ( String  name )   {
        System.out.println(    this.name       + " ,咬他!" );
    }
}

Main不变,结果为👇:

5、成员变量声明小结:

声明格式 —格式有很多 , 这里是成员变量的格式 , 思考有哪些 ?

  [public | protected | private]

  [static][ final]

  变量数据类型  变量名1[=变量初值], 变量名2[=变量初值], … ;

格式说明
public、protected、private 为访问控制符
static 指明这是一个静态成员变量
final 指明变量的值不能被修改

结束语:

以上是Jav第二章的第一节,希望大家喜欢

下一节开始讲类的方法和对象

喜欢的可以点赞+关注哈 ❤

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云边牧风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值