类和对象及其应用



面向对象:

面向对象思想概述:

面向对象是基于面向过程的编程思想

面向对象思想特点

更符合我们的思想习惯的思想

可以将复杂的事情简单化

将我们从执行者变成了指挥者

。角色发生了转换

面向对象的思想举例

。买电脑

。洗衣服

。万物皆为对象

面向对象开发

就是不断的创建对象,使用对象,指挥对象做事情。

面向对象设计

其实就是在管理和维护对象之间的关系

面向对象特征

。封装

。继承

。多态

类与对象的关系

我们学习编程语言就是为了模拟现实世界的事物,实现信息化。比如:去超买东西的计费系统,去医院的挂号系统等。

表示一个现实世界的事物

。属性   就是该事物的描述信息

。行为   就是该事物能够做什么

。举例   学生事物

java语言最基本的单位是类,所以我们应该把事物用一个类来体现

类:一组相关的属性和行为的集合

对象:是该类事物的具体体现

举例:

   。类   学生

   。对象  班长就是一个对象

 类的定义:

 现实世界的事物

   。属性  人的身高,体重等

   。行为  人可以吃饭,学习等

 java中用Class描述事物也是如此

   。成员变量  就是事物的属性

   。成员方法  就是事物的行为

定义类其实就是定义类的成员(成员变量和成员方法)

成员变量和局部变量的区别:

在类中的位置不同

成员变量类中方法外

局部变量方法内或者方法声明上

在内存中的位置不同

成员变量堆内存

局部变量栈内存

生命周期不同

成员变量随着对象的存在而存在,随着对象的消失而消失

局部变量随着方法的调用而存在,随着方法的调用完毕而消失

初始化值不同

成员变量有默认的初始化值

局部变量没有默认的初始化值,必须先定义,赋值,才能使用。

匿名对象:

匿名对象:就是没有名字的对象

          。是对象的一种简化表达形式

匿名对象的两种使用情况

  。对象调用方法仅仅使用一次的时候

  。作为实际参数传递

创建一个ee类如下:

public class ee {

public static void output(){

System.out.println("匿名调用");

}

 

}

创建一个test类如下:

public static void main(String[]args) {

//TODO Auto-generated method stub

         new ee().output();

}

结果:匿名调用

封装概述

是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

好处:

隐藏实现细节,提供公共的访问方式

提高了代码的复用性

提高安全性。

封装原则:

将不需要对外提供的内容都隐藏起来。

把属性隐藏,提供公共方法对其访问。

private关键字

是一个权限修饰符。

可以修饰成员(成员变量和成员方法)

private修饰的成员只在本类中才能访问。

 

private最常见的应用:

把成员变量用private修饰

提供对应的getXxx()/setXxx()方法

一个标准的案例的使用

举例:

创建一个ee

public class ee {

public int height=999;

private Stringname="无问西";

public  void output(){

System.out.println(name+height);

}

}

创建一个测试类My

public class my {

 

public static void main(String[]args) {

//TODO Auto-generated method stub

         eesa=new ee();

         System.out.println(sa.height);

         System.out.println(sa.name);

}

 

}

结果:Exception in thread "main" java.lang.Error: Unresolved compilation problem:

The field ee.name is not visible

由此可见可以访问publici修饰的成员变量,不能访问private修饰的成员变量

this关键字:

This :代表所在类的对象的引用

。方法被哪个对象调用,this就代表那个对象

this是为了解决成员变量与局部变量重名的问题

   含义:代表所在类的对象的引用

this使用
定义一个Demo类
public class Demo {
String tname="无问";
int height;
public String output(String tname){
System.out.println(tname);//当局部变量和成员变量相同时,变量采用就近原则;
System.out.println(this.tname);
return this.tname;
}
定义一个test类
public class test {


public static void main(String[] args) {
// TODO Auto-generated method stub
Demo sa=new Demo();
System.out.println(sa.output("西东"));
}
结果:
西东
无问
无问

注:java中的6字心法:new对象,调方法

   面向对象,是基于面向过程来说的,把我们从执行者,变成指挥者。

对比

Java

生活中

class

事物

人   通过属性和功能来定义人  性别,年龄  身高 体重 姓名...属于人的属性

 直立行走,看电影,属于人的功能

要想使用一个类,必须对类进行实例化,

所谓的实例化,就创建该类的对象,然后后才能使用里面的功能和属性

对象 其实 就是该类的具体表现

创建类对象 可以借助一个关键字new

构造方法:

。构造方法作用概述

给对象的数据进行初始化

。构造方法格式

方法名与类名相同

没有返回值类型,连void都没有

没有具体的返回值

。构造方法注意事项

如果你不提供构造方法,系统会给出默认构造方法

如果你提供了构造方法,系统将不再提供

构造方法也是可以重载的

一个基本类的标标准代码写法:

。成员变量

。构造方法

无参构造方法

带参构造方法

。成员方法

getXxx()

setXxx()

给成员变量赋值的方式

无参构造方法+setXxx()

带参构造方法

 

 

类的初始化:

Student s = new Student();在内存中做了哪些事情?

加载Student.class文件进内存

在栈内存为s开辟空间

在堆内存为学生对象开辟空间

对学生对象的成员变量进行默认初始化

对学生对象的成员变量进行显示初始化

通过构造方法对学生对象的成员变量赋值

学生对象初始化完毕,把对象地址赋值给s变量

构造方法作用概述
给对象的数据进行初始化
构造方法格式
方法名与类名相同
没有返回值类型,连void都没有
没有具体的返回值
构造方法注意事项
如果你不提供构造方法,系统会给出默认构造方法
如果你提供了构造方法,系统将不再提供
构造方法也是可以重载的


定义一个类Demo
public class Demo {
private String tname;
private int height;
public Demo(){
this.tname="不忘";
this.height=99;//自一个己定义构造函数,初始化成员变量
                                   没有返回值类型,连void都没有
  
}
public String getTname() {
return tname;
}
public void setTname(String tname) {
this.tname = tname;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
}


定义一个类test
public class test {


public static void main(String[] args) {
// TODO Auto-generated method stub
Demo sa=new Demo();
System.out.println(sa.getTname());//调用构造函数实现初始化
System.out.println(sa.getHeight());//99
sa.setHeight(88);//调用setHeight(int height)重新设置高度
System.out.println(sa.getHeight());//88
}
注:在类中对于成员变量,计算机会自动初始化,存储在堆中,构造函数不管你写不写出来,
它都会默认执行,如果你想在构造函数中初始化成员变量,那么你就必须写出来,自己重新定义。
也可以创建set()和get()函数来自己初始化成员变量。
  
  

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值