Java面向对象之类和对象
一、面向对象概述
Java是齐全的面向对象编程(Object Oriented Programming),简称OOP
。
面向对象编程的思维形式更加合乎大家的日常生活,因为咱们的事实世界都是由各种各样的对象组成,大到飞机、火车、楼房,小到一只狗、笔记本电脑、一本书都是实实在在的对象。然而每个对象都有本人的状态和行为,咱们能够通过对象来实现肯定的工作。
例如:咱们乘坐飞机从深圳飞到湘西去游览,咱们能够间接应用飞机的航行能力,而不必管飞机这个对象是如何制作的。间接应用即可。
应用面向对象的形式来形容由对象组成的世界,更加合乎人类的思维形式;
因为软件呈现的目标就是为了:
- 用计算机的语言形容事实世界
- 用计算机解决事实世界的问题
Java是目前最为风行的面向对象的编程语言(Python可能不服),领有面向对象的四大特色:
- 封装:暗藏外部实现细节,对外提供可拜访的办法
- 继承:子类主动继承父类中所有的非公有属性和办法
- 多态:同一事物,多种不同的示意状态,例如:重载、重写
- 形象:能够不必管具体的实现,定义对立的形象规定
面向对象编程是Java的核心思想,然而对于初学者来说,学习起来还是比拟形象。所以倡议初学者能够配合书籍一起学习,重复观看,从而把握其中精髓。
二、类
2.1 类的概述
类是Java应用程序中,必不可少的单位;创立类的关键字是:class
; 其实咱们在之前的学习过程中曾经接触过类,只是没有专门独自的拿出来讲。
例如:
- 以下创立了一个名称叫
Test01
的类 - 在类中定义了一个
main()
办法,也是程序的入口
public class Test01{
public static void main(String args[]){
//创立并且赋值
int score2[] = {100,90,88,85,66};
for(int i = 0;i<score2.length;i++) {
System.out.print(score2[i]+"\t");
}
}
}
所以创立类,也没有那么简单。把握其根本语法,而后依据本人的需要进行创立即可。
Java作为一门高级语言,咱们除了能够创立本人定义的类以外,还内置了许多预约义好的类。
例如:
- Scanner
- Math
- String
2.2 预约义类
所谓预约义类,就是Java语言依据理论业务场景,帮咱们预约义好的类。咱们只须要把握如何应用,不须要再去额定创立。
罕用的预约义类:
例如:
- Scanner :键盘输入
- Math :数学相干类
- String :字符串类
- Date :工夫日期相干类
- List :汇合类
Java提供的预约义类有点多,好在提供了帮忙文档,咱们能够依据帮忙文档查看:https://www.matools.com/api/java8
前面有章节专门来钻研罕用的预约义类。
2.3 发现类的过程
1、宠物—现实生活中的对象
如何在计算机中形容它?
世界上具体宠物对象,特地多。那么咱们如何用计算机语言来形容这么多宠物对象,如果一个个形容咱们必定是做不到的;所以咱们须要把握其中的法则来对其进行划分。
从事实中形象出类分为三步走:
- 第一步:找出它们的品种
- 第二步:找出它们的属性
- 第三步:找出它们的行为
2、第一步:找出他们的品种
依据以上信息,找出狗的品种;
Java应用的是class
关键字来形容类;
//创立一个名为Dog的类
class Dog{
}
3、第二步:发现类的特色
咱们能够依据每个对象,抽取出他们雷同的特色(属性);然而任何一个对象都会有多个特色
例如:Dog狗类的特色有
尽管特色很多,然而理论咱们只寄存咱们所须要的特色(属性):
class Dog {
String name = "旺财"; // 昵称
int health = 100; // 衰弱值
int love = 0; // 亲密度
String strain = "拉布拉多犬"; // 种类
}
4、第三步:发现类的办法
类的办法也能够称为行为
,是动静的。每个办法都能够看出是一个独立的性能
和属性一样,咱们寄存的也是咱们所关怀的行为
class Dog {
String name = "旺财"; // 昵称
int health = 100; // 衰弱值
int love = 0; // 亲密度
String strain = "拉布拉多犬"; // 种类
/* 输入狗的信息 */
public void print() {
// 输入狗信息的代码
}
}
通过以上三个步骤,咱们就能够创立一个残缺的类。以及指定了类中蕴含的属性和办法。
2.4 类的组成
通过以上发现类的过程,咱们能够看到类的根本组成:
//语法格局: [< 修饰符>] class < 类名> { [<属性申明>] [<结构器申明>] [<办法申明>] [{代码块}] }
1、属性
定义属性:语法
//语法 [修饰符] 数据类型 属性名称 = [初始值]; //例如 public String name = "来福"; //创立了一个属性,并且给初始值
修饰符:
public
: 示意公共的,拜访权限最大的,整个我的项目中都能够拜访private
: 示意公有的,拜访权限最小的,再能在以后类中拜访
数据类型:
- 数据类型能够是8种根本数据类型,也能够是援用数据类型
- 属性的初始值取决数据类型。
int默认值是0
、String默认值是null
属性名称:
- 属性也称为全局变量
- 只须要合乎根本的命名规定和标准即可
2、办法
也称为行为,失常一个办法示意一个具体的性能。例如:跑、吃、睡觉
//语法: [修饰符] 返回值类型 办法的名称([参数列表]){ //办法体。就是该办法的具体性能 } //案例 public void show(String name){ System.out.println("我的名字是:"+name); }
办法组成的四因素:
- 返回值
- 办法名称
- 参数列表
- 办法体
组成办法的四因素,缺一不可。
2.1 返回值
该办法执行结束之后,把值返回给办法的调用者
- 必须定义返回值的具体的类型,如果没有返回值应用void润饰
- 如果有具体的返回值,必须在语句块中应用return语句
//没有返回值
//1.应用void润饰
//2.不必应用return
//3.办法的调用者不能应用变量接管内容
public void add(int num1,int num2) {
int sum = num1+num2;
}
//有返回值的状况
//1.固定返回值类型
//2.办法体前面必须应用return关键字返回具体的数字
//3.办法执行之后的后果,能够应用变量保存起来
public int desc(int num1,int num2) {
int d = num1-num2;
return d;
}
2.2 办法名称
只是一个标识符,合乎命名规定和规
标准:
- 驼峰命名规定; 首个单词首字母小写,之后每隔单词首字母大写 getUserByName();
- 见名知意
2.3 参数列表
定义方法的时候,参数是可选的。
- 形参列表:(形式参数),只是负责定义参数,以及参数的类型和名称。然而该参数每页理论的值
- 实参列表:办法的调用时候
//定义方法
// num1,num2示意连个形参
//语法:数据类型 参数名,多个参数之间应用逗号隔开
public int desc(int num1,int num2) {
int d = num1-num2;
return d;
}
//办法调用
//abc:变量,接管办法的返回值
//50,20:具体的实参,实参数据类型,个数,程序必须和形参要统一
int acb = p1.desc(50,20);
2.4 办法体
{}示意办法体,也是办法具体的业务实现
public int desc(int num1,int num2) {
//具体的业务 依据场景不同。具体 也不同
int d = num1-num2;
return d;
}
3、构造方法
3.1 构造方法特色
它具备与类雷同的名称;
它不含返回值,也不须要应用void
关键字润饰
一个类中能够领有多个构造方法
public class Person{
public Person(){
//默认无参结构
}
public Person(String name){
//定义有参结构
}
}
3.2 构造方法作用
依照指定的规定来创建对象,实现对象的初始化工资;(给所有的属性赋值)
//留神: 构造方法不能应用void润饰,否则就是一般办法。丢失了构造方法的作用
//构造方法通过new 关键字 调用。不能通过对象调用 :
new Person(); //调用Person无参结构
new User("zhangsan", "深圳华丽居", "110"); //调用有参数结构
3.3 构造方法留神
- Java语言中,每个类都至多有一个构造方法;
- 如果类的定义者没有显式的定义任何构造方法,零碎将主动提供一个默认的构造方法:
- Java类中,一旦类的定义者显式定义了一个或多个构造方法,零碎将不再提供默认的构造方法;
- 结构器的次要作用:利用结构器参数初始化对象的属性。
public Person(String name,int age){
this.name = name;
this.age = age;
}
2.5 类图
形容整个类的信息;
- 用于剖析和设计“类”
- 直观、容易了解
三、对象
1、简介
- 万物皆对象,所有的货色都是一个对象
- 对象是类的具体实现,一个类能够创立任意多个对象
- 每个对象其实都是一个正本,对象与对象之间互不干涉
- 关键字:
new
-
应用:
- 对象名.属性名 –>student.username
- 对象名.办法名() —>student.eat();
2、创建对象的语法
new + 构造方法() : 例如: new Dog(); new Person();
非凡的办法:
a.不须要返回值 b.办法名和类名统一;
3、类的拜访机制
- 在一个类中的拜访机制:类中的办法能够间接拜访类中的成员变量
- 在不同类中的拜访机制:先创立要拜访类的对象,再用对象拜访类中定义的成员。
4、匿名对象
-
咱们也能够不定义对象的援用,而间接调用这个对象的办法。这样的对象叫做匿名对象, 如:
- 如果对一个对象只须要进行一次办法调用,那么就能够应用匿名对象。
- 咱们常常将匿名对象作为实参传递给一个函数调用
发表回复