java学习之面向对象(2)

在描述事物的时候,该事物已存在就具备的一些内容,这是我们就可以把它们都定义在构造函数中,那么什么是构造函数呢?

  构造函数就是构建创造对象时调用的函数,它可以给对象进行初始化。构造函数与类名相同,第一个字母大写。一个类中如果没有定义过构造函数,那么该类一定会有一个默认的空参数的构造函数。如果定义了指定的构造函数,那么系统默认的构造函数就没有了,如果还要用到就需要重新定义一次。而且,构造函数不唯一,可以有多个,用于不同的对象进行针对性的初始化。多个构造函数在类中是以重载(后面会讲到)的形式体现的。下面有一些代码:

class Person{
    private String name;
    private String sex;
    private int age;
    Person(){}

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

    Person(String name,String sex){
        this.name=name;
        this.sex=sex;
    }   

   Person(String name,String sex,int age){
       this.name=name;
       this.sex=sex;
       this.age=age;
    }

}

构造函数的出现对我们对对象的初始化提供了极大的帮助。那么构造函数与一般的函数有什么区别呢?

有两种区别:

一:对象创建时就会调用与之对应的构造函数对对象进行初始化。而一般函数是在对象创建之后,需要函数功能时才调用。

二:对象创建时,构造函数会调用并且只调用一次。而一般函数是在对象创建后,还可以调用多次。

什么是封装性?

封装是面向对象思想的三大特征之一。而封装就是隐藏实现细节,仅对外提供访问接口。封装的原则就是将不需要对外提供的内容都隐藏起来,并且属性隐藏之后对外提供公共的方法进行访问。一般封装有属性的封装、方法的封装、类的封装、组件的封装、模块化封装、系统级封装。封装之后有什么好处呢?封装之后可以将对象模块化,信息隐藏,代码重用,插件化易于调试,并具备一定的安全性。

class Person{
    private String name;
    private String sex;
    private int age;
    Person(){}

   public void setName(String name){
     this.name=name;
   }
   public String getName(){
      return name;
   }
}

注意:当成员变量与局部变量重名时,可以用关键字this区别。this:代表着当前对象,就是所在函数所属对象的引用。简单点说就是哪个对象调用了this所在的函数,this就代表着哪个对象。this也可以用于构造函数中调用其他的构造函数。但是this的引用只能放在第一行。

什么叫方法的重载?

  在类中可以创建多个方法,它们都具有同一个名字,但是却具有不同的参数和不同的定义。方法的命名首个字母要小写,从第二个单词开始首个字母大写如getName();

方法重载如下代码:

class Demo{
   .
   .
   .
   public int add(int a,int b){
    return a+b;
    }
    public int add (int a,int b,int c){
     return a+b+c;
    }
     public double add (double a,float b,int c){
     return a+b+c;
    }

}

浅谈关键字static。

static是静态的意思,是全局变量,static关键字是用于修饰成员,包括成员变量和成员函数。而被修饰后的成员具备着如下特点:随着类的加载而加载、优先于对象而存在、被所有的对象所共享、可以直接被类名调用(类名.静态成员)。

注意:使用了static的修饰的静态方法只能访问静态成员,不能调用非静态数据。而且静态方法中不可以写this,super等关键字。

谈到静态变量也就想到成员变量,那这两种变量有什么区别呢?

1、两个变量的生命周期不同:

成员变量随着对象的创建而存在,随着对象的被收回而释放;

静态变量随着类的加载而加载,随着类的消失而消失。

2、调用的方式不同:

成员变量只能被对象调用,而静态变量可以被对象调用,也可被类名调用。

3、别名不同:

成员变量也称为实例变量,静态变量也可称为类变量。

4、数据存储的位置不同:

成员变量数据存储在堆内存的对象中,也叫对象的特有数据。

静态变量数据存储在方法区的静态区。

静态有这种功能,那什么时候使用静态修饰呢?

1、修饰静态变量时,当分析对象中所具备成员变量的值都是相同的,这时成员变量就可以定义为静态的;只要数据在对象中都是不同的,是对象的特有数据,必须是非静态的;如果是相同的数据,对象不需要修改,只要使用即可,不需要存储在对象中,可以定义为静态的。

2、修饰静态方法时、函数是否用静态修饰就看一点:就是该功能函数是否访问到对象中的特有数据。简单点说:从源码来看,该功能是否需要访问非静态的成员变量,如果需要,该功能就是非静态的。

静态代码块、构造代码块和普通代码块的区别:

静态代码块随着类的加载而执行,而且只执行一次。作用是用于给类进行初始化。

普通代码块直接写在主函数中的代码块(方法);

构造代码块可以给所有的对象进行初始化,初始化的内容是所有对象共有的的功能。

时间: 2024-10-27 01:13:34

java学习之面向对象(2)的相关文章

Java学习之面向对象一

1 面向对象 1.1     理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式. l  面向过程的程序设计方式,是遇到一件事时,思考"我该怎么做",然后一步步实现的过程. 例如:公司打扫卫生(擦玻璃.扫地.拖地.倒垃圾等),按照面向过程的程序设计方式会思考"打扫卫生我该怎么做,然后一件件的完成",最后把公司卫生打扫干净了. l  面向对象的程序设计方式,是遇到一件事时,思考"我该让谁来做",然后那个"

Java学习之面向对象(概念性质) <好程序员特训营>

<A href="http://www.goodprogrammer.org/" target="blank">android培训</a>------我的java笔记,期待与您交流! 1.面向对象:三个特征:封装,继承,多态 2.开发过程:其实就是找对象使用.没有对象,就创建一个对象 3.类和对象的关系. 现实生活中的对象:张三 李四. 想要描述:提取对象中共性内容.对具体的抽象. 描述时:这些对象的共性有:姓名,年龄,性别,学习java功能

Java学习(一)--面向对象(一)

面向对象的思想一直指导者我们软件的分析.设计与开发.java语言是一种面向对象的语言,在学习java之前,先回顾一下面向过程和面向对象. 一面向过程 面向过程主张按功能来划分系统需求,每个功能都负责对数据进行一次处理,每个功能都接受一些数据.它最小的单位是函数,每个函数负责完成一个功能,整个系统由一个个函数组成,其中有一个主函数,作为程序的入口,主函数依次调用其他普通函数,普通函数之间依次调用,从而完成整个软件系统的功能,其实就是主函数负责把系统中的所有函数"串起来". 从上面的图中我

Java学习: 面向对象的使用与注意事项

面向对象的使用与注意事项 面向过程:当需要实现一个功能的时候,每一个具体的步骤都需要亲力,详细处理每一个细节面向对象:当需要实现一个功能的时候,不关心具体的步骤,而是找一个已经具有该功能的人,来帮我做事. 类与对象的关系 类是对一类事物的描述,是抽象的. 对象是一类事物的实例,是具体的. 类是对象的模板,对象是类的实例. 定义一个类,用来模拟“学生”事物.其中就有两组成部分: 属性(是什么): 姓名 年龄 行为(能做什么): 吃饭 睡觉 学习 对应到Java的类当中:成员变量(属性): Stri

java学习之面向对象(4)

之前介绍了java面向对象三大特性之一封装,现在来说说三大特性之一继承和抽象类.这些只是我个人的认识,不足之处还请见谅. 1. 继承是面向对象的三大特征之一,那么何为继承呢? 继承是指一个对象直接使用另一个对象的属性与方法,是通过extends关键字让类与类之间产生继承关系.而被继承的类称为父类,继承父类的类称为子类(派生类). //父类 class Animal { //如果属性需要被子类继承,那么可以使用protected关键字,方法也一样 protected String name; pr

Java学习之面向对象五

###01final关键字概念 * A: 概述 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承, 或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后, 就可以对其中的方法进行重写,那怎么解决呢? 要解决上述的这些问题,需要使用到一个关键字final,final的意思为最终,不可变. final是个修饰符,它可以用来修饰类,类的成员,以及局部变量. ###02final修饰类义 * A: final 修饰类 final修饰类

Java学习日记------面向对象①

1 package com.atguigu.java; 2 /* 3 理解1:人开门 4 面向过程:人 打开 门 5 面向对象: 6 人{ 7 打开(门){ 8 门.开开(): 9 } 10 } 11 12 门{ 13 开开(){ 14 } 15 } 16 */ 17 /*理解二:人把大象装冰箱 18 *面向过程:1)打开冰箱2)把大象装进去3)关闭冰箱门 19 *面向对象: 20 *人{ 21 * 打开(冰箱){冰箱.开开} 22 * 操作(大象){大象.进入(冰箱)} 23 * 关闭(冰箱)

Java学习日记------面向对象②

2018-03-01 1.创建Java类并实例化 package day02; /* * 面向对象思想的落地法则一: * 1.设计类,并设计类的成员(成员变量和·成员方法) * 2.通过类,来创造类的对象(也成为类的实例化) * 3.通过"对象.属性"或"对象.方法"来调用. */ public class zoo { public static void main(String[] args) { //基本数据类型的声明:数据类型 变量名=初始化值 //int i

Java学习日记------面向对象③

Java类的设计和使用练习 package day3; public class TestPerson1 { public static void main(String[] args) { Person1 a1=new Person1(); a1.study(); a1.showage(); a1.addAge(2); a1.Display(); } } class Person1{ String name; int age; boolean sex; public void study()

Java学习 &#183; 初识 面向对象深入一

面向对象深入 1.面向对象三大特征 a) 继承 inheritance 子类可以从父类继承属性和方法 子类可以提供自己的属性方法 b) 封装 encapsulation 对外隐藏某些属性和方法 对外公开某些属性和方法 c) 多态 polymorphism 适应变量的多种变化 1.1 封装 a)   为什么需要封装 隐藏对象内部的复杂性,只对外公开简单接口.便于外界调用,提高系统可扩展性.可维护性: b)   实现封装 使用访问权限符 成员四种访问权限 public 公共的 项目可见 protec