`
Luob.
  • 浏览: 1589841 次
  • 来自: 上海
社区版块
存档分类
最新评论

java之5天 面向对象

    博客分类:
  • Java
阅读更多
1.面向对象的特征
封装  继承 多态

以后的开发,其实就是找对象使用,没有对象,没有对象就创建一个对象

找对象, 建立对象, 使用对象,维护对象的关系

类和对象的关系

类就是:现实生活中实物的描述
对象:就是这类事物,实实在在的个体


比如: 张三 李四 
使用 java 类的描述 就是  
属性 (成员变量): 姓名   年龄  性别   
行为 (成员方法): 走路   学习  吃饭  睡觉  


成员变量:  作用于  整个类中  存在于  堆内存中
局部变量:  在栈内存中 


在描述下  Car
汽车总工程师          [图纸]

工人        汽车      汽车            汽车

可以看出 图纸中 规定了  汽车这一类个体  每个部件的参数 等信息

使用java来表示 
class  Car{    //图纸 
    
// (成员)属性 
   String  color="red";   //汽车有颜色,  工程师 规定这批次的 车的颜色默认为 红色
   int  num=4;     // 工程师规定  这批次的 车 有4个轮子 


//(成员)方法

  void run(){  
   
   System.our.println(color+"色的"+num+"轮车在跑!");

  }

}


//工人 专门根据 图纸 造对象
class  CarDemo{

    public static void mian(String [] args){
            Car c2=new Car();
            c.run();   // red色的4轮车在跑

            Car  c3=new  Car();
            cl.color="yellow";   //工程师打来电话说 这辆车 要改成 黄色 
            c1.run();     // yellow 色的4轮车在跑


           //对象的引用
           Car c=new Car();
           c.num=5;
           Car c1=c;
           c1.color="black";
           c.run();   //   
            
    }


}





匿名对象
匿名对象   
    new  Car();
    new  Car().num=5;
    num  Car().color="green";

//匿名对象使用方式一:  当对对象的方法 调用一次时,可以使用匿名对象来完成,这样写比较简化.
//如果一个对象尽心多个成员调用,必须给这个对象起个名字.

//匿名对象使用方式二: 可以将匿名对象作为实际参数进行传递.

//需求 ,汽车修配厂,对汽车进行改装,将来的车改成黑色, 三个轮胎 .


Car  q=new Car();
update(q);

public  static void update(Car c){
  c.color="black";
  c.num=3;
  c.run();
 
}



实名对象的使用


匿名对象的使用



面向对象的第一大特征:封装  Encapsulation
//1.是指隐藏对象的属性和实现的细节,仅对外提供公共访问的方式   
//函数是java中最小的封装体 

好处:  
    将变化隔离   
    便于使用, 
    提高重用性  
    提高安全性

封装原则
    将不需要对外提供的内部犯法隐藏起来
    把属性都隐藏,提供公共方法对其访问.


修饰符 关键字的使用
/**
private : 私有 ,修饰类中的成员变量  成员方法(函数) ,旨在本类中有效.

将 age 私有化后,类以外 即使建立了对象也不能直接访问.
但是 ren 应该有年龄,就需要在person类中提供对应访问age 的方式setAge()  getAge()

注意: 私有仅仅是封装的一种表现形式.

之所以提供对外访问的方式,是因为我可以在这里方法里面进行一些 逻辑判断等语句控制.
这样提高程序的健壮性. 


*/

class Person{
   private int age; //加入了 私有  外部就不能范围 

   void speark(){
      System.out.prinlnt("age="+age);
   }

// 一个属性只有  两个 操作方法 .一个 取值 一个赋值.
  public void setAge(int a){
     if(a>0 && a<130)
      age=a;
    else
      age=0;
     
  }

  public int  getAge(){
   return age;
  }

}


class PersonDemo{

  public static void main(String[] args){

      Person p=new Person();
      //p.age=-20;  //如果不私有 就会出现 安全问  出现了 -20的年龄 
      p.setAge(40); 
      p.speak();
  }


}






构造函数 和 构造代码快
//特点
1.函数和类名相同
2.不用定义返回值类型
3.不可以用return语句

//作用
给对象进行初始化

//注意
1.默认构造函数的特点
2.多个构造函数都是已重载的形式存在的.
3.构造函数的小细节: 当一个类中没有定义构造函数时,系统会默认你给该类加入一个空参数的构造函数 (如果自己定义了,系统就不会添加这个函数)

4.构造函数 也是函数的一种 ,所以具备 函数重载的特点

5.构造函数 如果为private  类就不能被外边初始化


//和一般方法的区别
1.写法上不同
2.在运行上不同 
   构造函数在对象一建立就运行  
   一般方法,是 对象调用才运行,是给对象添加的具备的功能.

3.一个对象建立,构造方法只运行一次.
  而一般方法.对象可以调用多次.

//什么时候定义构造函数呢

当一个事物一存在就具备一些特性或者行为,就将这些内容定义在构造函数中.



/**
构造函数: 对象一建立就会调用与之对应的构造函数.

构造函数的作用,可以用户给对象进行初始化 
*/
class person{
   private String name;
   private int age;

/**构造代码快     对象一建立就运行 ,优先于 构造函数执行.
和构造函数的区别
构造代码快是给所有兑现都统一初始化
构造函数是给对应的对象初始化
*/
{
  System.out.println("Person code run"):
  cry(); //不同对象的共性初始化内容  就不用在不同的构造函数中调用了

}
   /*
   Person(){
      System.out.println("A: name="+name+",age="+age);
     //cry();
   }*/ 

   Person(int a){
      age=a;
      System.out.println("B: name="+name+",age="+age);
      //cry();
   }

   Person(string n,int a){
      name=n;
      age=a;
      System.out.println("C: name="+name+",age="+age);
      //cry();
   }

  public void cry(){
    System.out.println("孩子哭了!");
  }
}

class PersonDemo{

   public static void main(String [] args){

      Person p=new Person();  //如果无参数的构造函数 被注释了, 就会报错找不到 初始化方法.
      Person p1=new Person(1);
      Person p2=new Person("alice",1);

   }


}



this 的用法
/**
this: 看上去,是用于区分局部变量和成员变量的同名情况

this: 就表示本类的对象.到底代表那一个呢?
this:  代表所在函数所属对象的引用

简单说: 哪个对象在调用this所在的函数,this就代表哪个对象.
*/

class Person{
 private String name;
 private int age;

Person(int age){
this.age=age;
}

/*
 Person(String name){
  name=name; 
 }
*/
 Person(String name){
  this.name=name; 
 }

public void speak(){
  System.out.println("name"+name+",age="+age);
}

/*
需求,给人定义一个用户比较年林是否相同的功能,也就是是否是同龄人
*/
public boolean compare(Person p){
   return this.age==p.age;  //使用 this 表示谁调用这个方法就表示那个对象. this 的地址值指向 那个对象 .
}


}


class PersonDemo{

 public static void main(String[] args){

     Person p=new Person("lisi");  
     p.speak(); // 如果没有使用this name=nulll,age=0;  

     Person p1=new Person(21);
     Person p2=new Perseon(25);
     p1.compare(p2);
   
  }
}





构造函数间的引用

/**
this 语句  :用于 构造函数间的互相调用.

this 只能放在 构造函数的第一行.应为初始化要先执行.
*/
class Person{
  private String name;
  private int age;
   
 Person(){
    // this("haha");  不能出现 否则就死循环了
  System.out.println("Person code run"): //3
 }

 Person(String name){
   this();  //2
   this.name=name; 
 }

 Person(String name,int age){
   
    //this.name=name;  
    this(name);   //this 语句  1
    this.age=age; 
 }


}



4
1
分享到:
评论

相关推荐

    java面向对象5天

    ### Java面向对象基础知识点详解 #### 1. 打Jar包 在Java开发中,将多个`.class`文件以及相关的资源文件打包成一个单一的`.jar`文件是一种常见的做法,这样便于管理和部署。`.jar`文件实际上就是一种压缩格式,类似...

    Java面向对象程序设计课本例题源代码

    Java面向对象程序设计是计算机科学领域中一门重要的编程语言课程,尤其在软件开发中占据着核心地位。清华大学的耿祥义教授编写的教材是许多学习者深入理解Java面向对象编程的首选资料。这个压缩包中包含的就是这本...

    Java面向对象程序设计---课件PPT.zip

    在Java中,面向对象编程(Object-Oriented Programming, OOP)是其核心特性之一,使得开发者能够创建复杂、可维护且易于扩展的软件系统。下面,我们将深入探讨Java面向对象编程的关键概念。 1. 类(Class):类是...

    java面向对象示例-简单的求下一天的程序

    在Java编程语言中,面向对象(Object-Oriented Programming,OOP)是一种核心特性,它允许我们通过模拟现实世界中的对象来设计和实现软件。在这个示例中,“简单的求下一天的程序”是为了演示如何利用面向对象的概念...

    13-面向对象-第5天(面向对象其他知识点)-讲义共7页

    在“13-面向对象-第5天(面向对象其他知识点)-讲义共7页”中,我们可以期待学习到面向对象编程的一些高级和扩展概念,这些可能包括但不限于继承、多态、抽象类、接口、封装、构造函数以及设计模式等。 首先,继承...

    java 酒店管理面向对象联系

    在Java编程语言中,面向对象(Object-Oriented Programming,OOP)是一种核心特性,它在酒店管理系统的设计和实现中发挥着至关重要的作用。面向对象编程的理念是将现实世界中的实体抽象为类,然后通过实例化这些类来...

    5天学会java的教程

    - **面向对象:**Java 是一种完全的面向对象编程语言,支持封装、继承和多态等面向对象的核心概念。 - **自动内存管理:**Java 提供了垃圾回收机制,自动管理内存,减轻了开发者在内存管理上的负担。 - **安全性:**...

    Z00297 Java面向对象编程 第2版.rar

    Java面向对象编程是软件开发领域中的核心技术之一,尤其在企业级应用中占据着主导地位。第二版的"Z00297 Java面向对象编程"很可能包含了一系列深入讲解这一主题的教程或教材,旨在帮助学习者掌握Java语言的核心概念...

    13_Java面向对象_第5天(static、final、匿名对象、内部类、包、修饰符、代码块)_讲义

    Java是一种广泛使用的面向对象的编程语言,其设计目标是提供高度的可移植性、灵活性和安全性。本讲义主要涵盖了Java中的几个核心概念,包括`static`、`final`、匿名对象、内部类、包、修饰符以及代码块。下面将逐一...

    面向对象课程设计报告.doc

    面向对象课程设计报告的核心是通过Java编程语言实现一个类似于Windows中的“画图”工具,旨在让学生深入理解和应用面向对象编程的基本概念和技巧。这个项目涵盖了以下几个关键知识点: 1. **面向对象编程基础**:...

    7天零基础搞定java开发,深刻体会面向对象,自己开发游戏引擎--教材版.zip

    在本资源中,你将通过"7天零基础搞定java开发"的学习教程,掌握Java编程的基础,并深入理解面向对象的设计思想。这个项目旨在让你在短时间内快速入门Java开发,并且通过实际编写游戏,体验到编程的乐趣和挑战。我们...

    Java面向对象面试题.pdf

    Java面向对象面试题 以下是对Java面向对象面试题的知识点总结: 1. super() 和 this() 的区别:super() 用于调用父类的构造方法,而 this() 用于调用同一个类的其他构造方法。 2. 作用域 public, protected, ...

    Java基础之笔记系列—Day06(面向对象)

    ### Java基础之笔记系列—Day06(面向对象) #### 关键知识点:二维数组 在本篇笔记中,我们深入探讨了Java中的二维数组。二维数组实际上是由多个一维数组构成的一个数组,常用于处理表格数据或矩阵运算等场景。 ##...

    21天学通java6(第5版).pdf

    5. 面向对象编程: - 类和对象:类是对象的模板,而对象是类的实例。 - 构造方法:特殊的类方法,用于创建对象并初始化。 - 继承:允许一个类继承另一个类的特性,提高代码的复用性。 - 接口:接口是一种抽象的类型...

    Java 培训讲义_5天

    这份"Java培训讲义_5天"的资料,旨在为初学者提供一个全面且实用的学习路径,帮助他们快速掌握Java的基础知识。 在五天的培训中,通常会涵盖以下几个核心主题: 1. **Java语言基础**:第一天可能从Java的历史和...

    12_Java面向对象_第4天(构造方法、this、super)_讲义

    Java是一种广泛使用的面向对象的编程语言,其面向对象特性使其非常适合构建复杂且可维护的软件系统。本讲义主要探讨了Java中的三个关键概念:构造方法、`this`关键字和`super`关键字,这些都是理解Java类和对象核心...

    10_Java面向对象_第2天(继承、抽象类)_讲义

    Java是一种广泛使用的面向对象的编程语言,其面向对象特性使得代码更加模块化,易于维护和扩展。本讲义主要探讨了两个重要的面向对象概念:继承和抽象类。 首先,我们来了解一下继承。在Java中,继承是面向对象设计...

    5天Java培训讲义

    这份“5天Java培训讲义”旨在为初学者提供全面的Java学习指导,涵盖了从基础到进阶的关键概念。 第一天的课程可能侧重于Java的基础知识。Java_1.ppt可能会包含以下内容: 1. **Java简介**:讲解Java的历史、特性...

    传智播客.黑马程序员《Java 基础入门》课后习题答案

    1、 面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。 2、 JRE(Java Runtime Environment,Java 运行时环境),它相当于操作系统部分,提供了 Java 程序运 行时所需要的基本条件和许多 Java ...

    Java培训讲义_5天

    本"Java培训讲义_5天"提供了一条快速学习和提升Java技能的路径,适合初学者和有一定基础的开发者。接下来,我们将深入探讨这五天培训中的关键知识点。 **第一天:Java基础知识** 在第一天的学习中,我们通常会从...

Global site tag (gtag.js) - Google Analytics