11.面向对象概述,类和对象,成员变量和局部变量
Posted 榨菜配菜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)对象的使用
(4)对象的销毁
4.成员变量和局部变量
例子:
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();//调用函数
面向对象
面向对象的基本概念——对象
——类:同种物体(对象)在属性和行为上的集合与抽象
用来描述对象的属性和行为,向jvm描述
类和对象的关系:描述与被描述的关系
类并不能规定对象的属性取值,只有具体的对象才能决定属性取值
成员变量和局部变量:
局部变量 | 成员变量 |
定义在方法体中的变量 | 定义在方法体之外 |
储存在栈帧中 |
成员方法:只要把我们之前的写的方法中的static修饰符去掉
创建类对象——new,new表达式是堆上的首地址,新的new新的地址
给对象的属性赋值(即给对象的成员变量赋值),通过 对象名.成员变量名 的方式
访问对象的行为——对象名.成员方法
student zs ————zs是一个引用变量,指向堆上的一个值
数据类型:一个数据集合和基于这个数据集合的 一组操作
类定义:类体中包括,成员变量和成员方法
类定义中的数据集合:成员变量的集合
类定义的操作集合:成员方法集合
说白了一个类就是一种数据类型的定义
当首次创建某个类的对象的时候,会触发jvm对该类的l类加载过程
将类对应的字节码文件加载到方法区内存中,jvm通过字节码解析认识该类
对于堆上的东西因为要有值,所以设置为默认初值
行为(成员方法)存储在字节码文件当中
访问不同对象的相同行为,输出结果不同,随着对象的不同而不同
以上是关于11.面向对象概述,类和对象,成员变量和局部变量的主要内容,如果未能解决你的问题,请参考以下文章
Java笔记(面向对象,类,this关键字,封装(private),匿名对象,成员变量和局部变量)