11.面向对象概述,类和对象,成员变量和局部变量

一.面向对象概述

1.面向对象程序设计目的

(1)从程序设计的角度来看,事物的属性就可以用变量来表示,行为则可以用方法来反映。

(2)客观世界中事物的属性和行为可以进行传递,当某一个事物得到另一个事物传给它的属性和行为,我们就说该事物实现了继承。

(3)继承不同于复制,实现了继承的事物可以添加上自己的属性和行为,从而实现对已有事物的功能扩充。

(4)面向对象的程序设计方法将客观事物进行抽象,并且通过继承等技术实现软件的可扩充性和可重用性。

2.java面向对象设计的核心设计

(1)面向对象程序设计的核心技术是封装,继承和多态性。

(2)类是封装的基本单元。通过封装可以隐藏类的实现细节,也可以避免对类中属性的直接操作。可以通过类的公共接口访问类中的变量,而不必知道这个接口(公共方法)是如何实现的。只要这个方法的名字和参数不变,即使类中的变量被重新定义或方法的代码被修改,对类中变量的访问也不会受到影响。

例如,你要在计算机上安装一块声卡,你不必知道声卡的内部结构,也不必知道声卡的功能是如何实现的,因为实现声卡功能的集成电路都被封装了。你只要知道声卡应该安装在你的计算机主板的什么位置,其他设备如音箱、光驱怎样与声卡连接就可以了。

(3)继承是对类的功能的重用和扩充。通过对某一个类的继承产生一个新类(子类),子类既有从某个类(超类)中继承下来的功能,又可以定义自己的变量和方法,产生新的功能。

(4)多态性是指方法的名字相同,但实现不同。即“一个接口,多个方法”。如有三个方法,分别用来计算圆、矩形和三角形的面积,它们都可以叫 area。

3.知识点java面向对象技术

Java是一种完全面向对象的程序设计语言,它所有的属性类型和方法都封装在类中。Java继承了C++的优点,但放弃了那些含糊、复杂和容易出错的特性。Java 所实现的面向对象的特性,降低了程序的复杂性,实现了代码的可重用性,提高了运行效率。

二.类和对象

1.总体概述:

类是一种特殊属性类型,对象是类的实例,类是对象的抽象

例如:学生(类)和每个学生(对象)

2.类

<类首声明>{//类首声明定义了类的名字,访问权限以及与其他类的关系。
<类主体>//类主体定义了类的成员,包括变量(属性)和方法(行为)。
}

(1)类首声明格式:

[<修饰符>] class <类名> [extends<超类名>] [implements<接口名>]
//例如
public class ZhaCai
//方括号部分表示可要可不要
//class类定义的关键字
//extends表示类和另外一些类(超类)的继承关系
//implements表示类实现了某些接口
//修饰符表示类的访问权限(public,private等)和一些其他性质(abstract,final等)

(2)类主体格式:

<类首声明>{//以下为类主体
<成员变量的声明>//成员变量反映来类的外观和状态
<成员方法的实现>//成员方法即类的行为(对属性的操作)
}
//例如
public claa ZhaCai{
.......
int year,month,day;//成员变量
public void today(){//成员方法
System.out.print("Date is"+year+"年"+month+"月"+day+"日");
}
}
.......

 3.对象

(1)对象的创建

类是一种数据类型,是对事物的抽象,在程序中,必须创建它的实例对象,就如同在现实生活中我们遇到的都是一个个具体地事物而不是抽象的概念。

①第一种方式(不常用)

//格式
//声明对象
<类名><对象名>;
//实例化
<对象名>=new<类名>();
//例子
ZhaCai de;
de=new Zhacai();

②第二种方式:在声明对象的同时,将它实例化

在将对象实例化时,就向内存申请分配存储空间,并同时对对象进行初始化,这些工作分别用new运算符和类的构造方法来完成。

//格式
<类名><对象名>=new <类名>();
//例子
ZhaCai de=new ZhaCai();

(2)对象初始化

类对象不能直接调用方法,除非方法声明为static

构造函数是类中的特殊方法

构造方法无返回值,只用new运算符调用,用户不能直接调用

(3)对象的使用

11.面向对象概述,类和对象,成员变量和局部变量_第1张图片

(4)对象的销毁

 11.面向对象概述,类和对象,成员变量和局部变量_第2张图片

 

 

4.成员变量和局部变量

11.面向对象概述,类和对象,成员变量和局部变量_第3张图片

例子:

package basicdemo;
public class Class_Date {
    int year,month,day;//定义成员变量,在整个范围中使用
    //设置日期的方法
   public void setdate(int y,int m,int d){
            year = y;month = m;day = d;
        }
    //判断是否是闰年的方法
    boolean isleap(int y){
        return (y%4==0&&y%100!=0)||y%400==0;
    }
    //显示今天的日期的方法
   void today(){
            System.out.println("The date of today is"+year+"/"+month+"/"+day);
            }
   //显示明天日期的方法
   void tomorrow() {
       int d,m,y;//定义局部变量
       d=day+1;//关键此处加1天
       m=month;y=year;//赋值
       //判断是二月,且日期大于28号的情况
       if((d>28)&&month==2){
           d=1;m=m+1;
        }
       //判断日期大于30号且((月份小于7且是偶数2,4,6等月)或者(月份大于7且是奇数月))
       else if(((d>30&&(month<7&&month%2==0||month>7&&month%2==1)))){
           d=1;m=m+1;
       }
       //其他情况
       else if(d>31){
          d=1;m=m+1;
          if(m==13){
              y=y+1;m=1;
          }
       }
       System.out.println("Thedate of tomorrow is"+y+"/"+m+"/"+d);
       }
    public static void main(String[] args) {//主函数,程序从此处入口
       Class_Date de=new Class_Date();//类,创建对象
       de.setdate(2000,2,29);//利用setdate方法设置日期
       if(de.isleap(de.year))//判断是否是闰年,调用函数
           System.out.println(de.year+"is a leap year");
       de.today();//调用函数
       de.tomorrow();//调用函数
        }
    }

你可能感兴趣的:(Java初阶学习笔记,java,开发语言)