类与对象

  • 1、基本概念
  • 2、类与对象的关系
  • 3、类的使用步骤
  • 4、带参方法
  • 5、构造方法
  • 6、方法的重载
  • 7、访问修饰符

1、基本概念

对象:对象表示现实世界中一个具体的事物。对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。

类 :类是一个模板,它描述一类对象的行为和状态。

2、类与对象的关系

类是抽象的概念,仅仅是一个模板,比如说:“人”。
对象是一个你能够看得到、摸得着的具体实体。
类定义了对象将会拥有的特征(属性)和行为(方法)
类是对象的类型,对象是类的实例

3、类的使用步骤

创建一个Person类:

public class Person {String name;int age;void eat() {}void sleep() {}
}

创建Person对象:

public class Person {String name;int age;void eat() {}void sleep() {}public static void main(String[] args) {//创建Person对象Person per = new Person();//调用方法per.eat();}
}

一个类可以包含以下几种变量:
局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。

4、带参方法

1.为什么要用带参方法
例如,将榨汁机工作过程模拟到程序中:榨汁操作对应榨汁的方法;提供的水果原料对应方法参数;得到的果汁对应方法的返回值。传入不同的参数将得到不同的返回值。

2.带参方法的使用
1)一个参数
定义带参方法:

public class ZhazhiJi {public String zhazhi ( String fruit ) {String juice = fruit + "汁";return juice; } }

调用带参方法:
/调用zhazhi方法/

ZhazhiJi myZhazhiji = new ZhazhiJi();
String myFruit = "苹果";
String myJuice = myZhazhi.zhazhi(myFruit);
System.out.println(myJuice);

2)多个参数
定义带参方法:

public class ZhazhiJi {public String zhazhi ( String fruit,String fruit2 ) {String juice = fruit + "汁和"+fruit2+"汁";return juice; }
}

调用带参方法:
/调用zhazhi方法/

ZhazhiJi myZhazhiji = new ZhazhiJi();
String myFruit = "苹果";
String myFruit2 = "桃子";
String myJuice =  myZhazhi.zhazhi(myFruit,myFruit2);
System.out.println(myJuice);

5、构造方法

构造方法作用就是对类进行初始化。每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认不带任何参数的构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
//案例

class Person //人类{public Person(String n,int a) //构造方法{name = n; age = a;}private string name;private int age;
}public static void main(String[] args){Person p = new Person("张三",14);//这就是作用
}

new一个对象的时候要用到构造函数,例如Hello hello = new Hello();这时调用的是Hello的无参数构造方法。
Hello hello = new Hello(“hi”);这个是调用Hello的有参数构造方法。
在JAVA中如果不写构造方法的话,会默认加上一个无参数的构造方法,但是如果已经有了一个有参数的构造方法,那么无参数的构造方法就不会默认被加上。无参数的构造方法就失效了
如果Hello类中已经有了一个有参数的构造方法,这时再使用 Hello hello = new Hello();来创建对象的时候就会出错,这就是为什么要强调写了有参数的构造方法就最好加一个无参数的构造方法。

6、方法的重载

在Java程序中,如果同一个类中存在两个方法同名,方法的签名(参数个数、参数类型、类型排列次序)上也一样,将无法编译通过。
但在Java中多个方法重名是允许的,只要保证方法签名不同即可,这种特性称为方法重载(overload)。

方法重载需遵循如下两条规则:
(1)方法名相同;
(2)参数列表(个数、类型、顺序)不同;

注意:返回值不影响方法重载。
构造方法也可以重载 。

以下实例演示了如何重载 MyClass 类的 info 方法:

class MyClass {int height;MyClass() {System.out.println("无参数构造函数");height = 4;}MyClass(int i) {System.out.println("房子高度为 " + i + " 米");height = i;}void info() {System.out.println("房子高度为 " + height + " 米");}void info(String s) {System.out.println(s + ": 房子高度为 " + height + " 米");}
}
public class MainClass {public static void main(String[] args) {MyClass t = new MyClass(3);t.info();t.info("重载方法");//重载构造函数new MyClass();}
}

以上代码运行输出结果为:
房子高度为 3 米
房子高度为 3 米
重载方法: 房子高度为 3 米
无参数构造函数

7、访问修饰符

Java中定义了private(私有的)protected(受保护的)和public(公共的)的访问修饰符,同时也定义了一个缺省的访问级别,用于声明类、属性、方法的访问权限。
(1)使用public访问修饰符,类的成员可被同一包或不同包中的所有类访问,也就是说,public访问修饰符可以使类的特性公用于任何类;
(2)使用protected访问修饰符允许类本身、同一包中的所有类和不同包中的子类访问;
(3)如果一个类或类的成员前没有任何访问修饰符时,它们获得缺省的访问权限,缺省的可以被同一包中的其他类访问;
(4)private访问修饰符是限制性最大的一种访问修饰符,被声明为private的成员只能被此类中的其他成员访问,不能在类外看到。

访问修饰符 本类 同包 子类 其他
private
默认(friendly)
protected
public

JavaSE02(类与对象)相关推荐

  1. JavaSE-02(类与对象、枚举、接口)

    一.类与对象(一):成员变量.成员方法.构造器 1. 类与对象简介 1.1. 什么是类? 类:是一类具有相同特性的事物的抽象描述,是一组相关属性和行为的集合.可以看成是一类事物的模板,使用事物的属性特 ...

  2. C++ 笔记(18)— 类和对象(this 指针、指向类的指针、类静态成员变量和函数)

    1. this 指针 在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址. this 指针是所有成员函数的隐含参数.因此,在成员函数内部,它可以用来指向调用对象. 友元函数没有 thi ...

  3. C++ 笔记(16)— 类和对象(类定义、类实例对象定义、访问类成员、类成员函数、类 public/private/protected 成员、类对象引用和指针)

    1. 类的定义 类定义是以关键字 class 开头,后跟类的名称.并在它后面依次包含类名,一组放在 {} 内的成员属性和成员函数,以及结尾的分号. 类声明将类本身及其属性告诉编译器.类声明本身并不能改 ...

  4. C02-程序设计基础提高班(C++)第9周上机任务-类和对象

    第9周:阅读教材第8章(p231-262),主要内容是类和对象,学会定义类和对象解决问题,完成第9周上机任务: (回到C02-程序设计基础提高班(C++)学习安排) 实践任务: [任务1]阅读.运行下 ...

  5. 函数返回类的对象与拷贝构造函数

    C++中,如果我们在一个函数中,定义了一个类的对象,然后返回这个对象,在main函数中用一个对象去接受这个返回的对象的时候,这里面参与的函数调用大家可能不熟悉,这里通过程序和注释的方式给大家讲解一下. ...

  6. ZJU-java进阶笔记 第一、二周(类与对象,对象交互)

    对象变量是对象的管理者,而非所有者 VendingMachine vm = new VendingMachine(); this指代当前对象 成员函数可以直接(不需要点运算符)调用本类的其他成员函数 ...

  7. 3个题目熟悉类和对象基础

    1.按要求编写Java应用程序: (1)编写西游记人物类(XiYouJiRenWu)其中属性有:身高(height),名字(name),武器(weapon)方法有:显示名字(printName),显示 ...

  8. 刻意练习:Python基础 -- Task10. 类与对象

    背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...

  9. java中具有继承关系的类及其对象初始化顺序

    先说结论 对于具有继承关系的类,它们的类和对象构造顺序为:父类的类构造器() -> 子类的类构造器() -> 父类成员变量的赋值和实例代码块 -> 父类的构造函数 -> 子类成 ...

最新文章

  1. gpu处理信号_在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练
  2. 《CSS世界》读书笔记(十一)
  3. slice,substring,substr的区别
  4. html5 本地存储Web Storage
  5. ASP.Net中实现中英文复合检索文本框
  6. Springboot 项目启动后执行某些自定义代码
  7. 群聊金山云与英特尔的“AI as a Service”,你都get到了什么?
  8. 托雷基亚vs_奥特曼:上海英雄魂展来袭,托雷基亚和泰迦等身雕塑国内首秀,泽塔CV压轴...
  9. 【opencv学习】【图像的阈值处理】
  10. 关于使用layer弹出框展现echarts不显示的问题
  11. sql 中 case when 语法
  12. COCO2017 test-dev评估
  13. python如何修改图片透明度_如何改变图像的不透明度
  14. linux下10款markdown软件
  15. 方舟服务器设置文档,方舟云服务器设置
  16. win10系统 DNS服务器,Win10系统DNS服务器无响应
  17. 《深入浅出通信原理》辅助笔记
  18. BAPI货物移动时报错
  19. 【笔记】excel预加载word引用
  20. Instagram密友名单与私密账户的区别

热门文章

  1. 武汉云数时代网络科技有限公司代运营具体需要做好哪些方面?
  2. Assert 的用法
  3. mbedtls加密组件使用示例
  4. java opencv 去噪,opencv教程-图像去噪与修复
  5. HTML标签的基本使用:无序列表、有序列表、定义列表
  6. Input框内容改变触发事件,实现表格动态模糊查询
  7. homeassistant主动推送信息
  8. 学术圈很火的 超材料、超表面、超透镜:什么时候可以代替传统透镜?
  9. 超级可爱的萌妹焊接艺术壁画,它是画上去的!
  10. //我一次黑别人的电脑时的技术经过!