类与对象

类与对象篇

1.类与对象

*理解面向对象的概念

-相当于主语与谓语的关系

-面向对象的三大特征:1.封装,2.继承,3.多态

*类的定义

-类和对象是面向对象方法的核心概念

-类:是对一类事物的描述,是抽象的,概念上的定义。

-对象:是实际存在的该类事物的每个个体,因而也称实例。

例子:

public class Student

{

//属性

public String Name;

public int age;

public int score;

//定义方法

public void Study()

{

System.out.println(“student
must be studying!”);

}

}

//声明对象,并创建一个类的对象,命名为Stu1

Student Stu1 = new
Student();//使用一个new关键字

//调用类方法

Stu1.Study();

*声明类、属性、方法

-声明类

语法格式:

语法格式:

[< 修饰符>] class
< 类名>

{

[<属性声明>]

[<构造器声明>]

[<方法声明>]

}

说明:修饰符public:类可以被任意访问

类的正文要用{  }括起来

举例:

public class  Person{

private int age ;              
//声明私有变量 age

public void showAge(int
i) { //声明方法showAge

age = i;

}

}

-声明属性

语法格式:

[<修饰符>]  类型  < 属性名> [=初值] ;

说明:修饰符 private:
该属性只能由该类的方法访问。

修饰符 public: 该属性可以被该类以外的方法访问。

类型:任何基本类型,如int、boolean或任何类。

举例:

public class Person{

private int age;             //声明private变量 age

public String name = “Lila”; //声明public变量 name

}

-声明方法

语法格式:

<修饰符> <返回类型> <方法名>([< 参数表>]) {

[< 语句>]

}

说明: 修饰符:public,private,protected 等。

返回类型:return语句传递返回值。没有返回值:void。

举例:

public class Person{

private int age;

public int getAge()  { return age; } //声明方法getAge

public void setAge(int i)
{          //声明方法setAge

age = i;        //将参数i的值赋给类的成员变量age

}

}

*创建、使用对象

-使用 new +构造方法
创建一个新的对象;

-使用 “对象名.对象成员” 的方式访问对象成员(包括属性和方法)

-如果创建了一个类的多个对象,对于类中定义的属性,每个对象都拥有各自的一套副本,且互不干扰。

-类的访问机制:

-在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(有一个例外)

-在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员。

*对象的生命周期

-一个类被创建以后才执行内存

-

*匿名对象

-我们也可以不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫做匿名对象,
如:new Person().shout();

-如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。

-我们经常将匿名对象作为实参传递给一个函数调用

2.信息的封装与隐藏

*使用这内部定义的属性(对象的成员变量)的直接操作会导致数据的错误、混乱或安全性问题

-Java中将数据声明为私有的(private),再提供公开的(public)方法:getXXX和setXXX实现对属性的操作,实现以下目的:

1.隐藏一个类的实现细节;

2.使用者智能通过事先定制好的方法来访问数据,可以方便加入控制逻辑,限制对属性的不合理操作

3.便于修改,增强代码的可维护性

3.构造方法

*构造方法的特征

-它具有与类相同的名称

-它不含返回值

-注意:在构造方法里不含返回值的概念是不同于“void”的,在定义构造方法时加了“void”,结果这个方法就不再被自动调了。

*构造方法的作用:

-当一个类的实例对象刚产生时,这个类的构造方法就会被自动调用,我们可以在这个方法中加入要完成初始化工作的代码。

例子:

功能:创建类的实例时,初始化实例的一组指令。

语法格式:

< 修饰符>  <类名>([< 参数表>]) {

[< 语句>]

}

举例:

public class Animal {

private int legs;

public Animal() {legs = 4;
}    //构造器

public void setLegs(int i)
{ legs = i; }

public int getLegs(){return
legs;}

}

创建Animal类的实例:Animal  a=new Animal(); //调用构造器,将legs初始化为4

注释:构造器的名称必须与类名相同。修饰符:public、private、protected

构造器不是方法,没有返回值(连void也不能写)

*默认的构造方法

-Java语言中,每个类都至少有一个构造方法;

-如果类的定义者没有显式的定义任何构造方法,系统将自动提供一个默认的构造方法:

-默认构造方法没有参数

-默认构造方法没有方法体

-默认的构造方法:Animal(){}

所以:不编写构造方法就能用new Xxx()创建类的实例。

-Java类中,一旦类的定义者显式定义了一个或多个构造方法,系统将不再提供默认的构造方法;

-构造器的主要作用:利用构造器参数初始化对象的属性。

4.方法的重载

*代码格式

返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,….)

程序代码

return 返回值;

其中:

-形式参数:在方法被调用时用于接收外部传入的数据的变量。

-参数类型:就是该形式参数的数据类型。

-返回值:方法在执行完毕后返还给调用它的程序的数据。

-返回值类型:函数要返回的结果的数据类型。

-实参:调用函数时实际传给函数形式参数的数据。

*函数的重载

在同一个类中可以定义多个同名方法—方法名重载(overload)

public class PrintStream{

public void print(int i) {……}

public void print(float f) {……}

public void print(String s) {……}

}

-重载方法的参数列表必须不同

-重载方法的返回值类型可以相同,也可以不同

-调用时根据方法的参数类型来区别。

-print(3);print(1.2f);print(“hello!”);

5.this关键字

*如果func2方法被调用 ,一定是事先已经有了一个存在的对象,func2被作为那个对象的方法被使用。

*在func2内部能引用别的对象 ,同样也能引用func2所属的那个对象。

*在func2中,自己所属的那个对象的引用名称是什么呢?

*this关键字在java程序里的作用和它的词义很接近,它在函数内部就是这个函数所属的对象的引用变量。

6.函数的参数传递

*基本数据类型的参数传递

*引用数据类型的参数传递

7.package语句/import语句

*package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包。(若缺省该语句,则指定为无名包)。它的格式为:

package <顶层包名>[.<子包名>]* ;

举例:pack\Test.java

package p1;    //指定类Test属于包p1

public class Test{

public void
display(){

System.out.println(“in  method display()”);

}

}

*包对应于文件系统的目录,package语句中,用‘ .’ 来指明包(目录)的层次;

*包通常用小写单词,类名首字母通常大写。

*import语句

-为使用定义在不同包中的Java类,需用import语句来引入所需要的类。Import语句告诉编译器到哪里去寻找类。

-语法格式:

import 
包名[.子包名…]. <类名
|*>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值