java基础-面向对象

面向对象内容的三条主线

1.Java类及类的成员

2.面向对象的三大特征

3.其它关键字

 

目录:面向过程与面向对象

1.面向过程和面向对象

2.java基本元素:类和对象

3.对象的创建和使用

4.类的成员之一:属性

5.类的成员之二:方法

6.类的成员之三:构造器

7.OOP特征一:封装与隐藏

8.关键字 this,package, import面面关

 

一:面向过程与面向对象

何谓“面向对象”的编程思想?

首先解释一下“思想”。

先问你个问题:你想做个怎样的人?

可能你会回答:我想做个好人,孝敬父母,尊重长辈,关爱亲朋……

你看,这就是思想。这是你做人的思想,或者说,是你做人的原则。

做人有做人的原则,编程也有编程的原则。这些编程的原则呢,就是编程思想。

面向过程(POP) 与 面向对象(OOP)

 二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的

是功能行为,以函数为最小单位,考虑怎么做。面向对象,将功能封装进对

象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。

 面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如

抽象、分类、继承、聚合、多态等。

面向对象的三大特征

封装 (Encapsulation)

继承 (Inheritance)

多态 (Polymorphism)

面向对象:Object Oriented Programming

面向过程:Procedure Oriented Programming

例子:人把大象装进冰箱

面向对象的思想概述

程序员从面向过程的 执行者 转化成了面向对象的 指挥者
面向对象分析方法分析问题的思路和步骤:
  1. 根据问题需要,选择问题所针对的现实世界中的实体
  2. 从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成了概念世界中的类
  3. 把抽象的实体用计算机语言进行描述,形成计算机世界中类的定义。即借助某种程序 语言,把类构造成计算机能够识别和处理的数据结构。
  4. 类实例化成计算机世界中的对象。对象是计算机世界中解决问题的最终工具。

二、Java语言的基本元素: 类和对象

(Class) 对象 (Object) 是面向对象的核心概念。
  1. 类是对一类事物的描述,是抽象的、概念上的定义
  2.  对象是实际存在的该类事物的每个个体,因而也称为实例(instance)
  “万事万物皆对象”

 

Java类及类的成员 

 

 

创建Java自定义类

步骤:
1. 定义类(考虑修饰符、类名)
2. 编写类的属性(考虑修饰符、属性类型、属性名、初始化值)
3. 编写类的方法(考虑修饰符、返回值类型、方法名、形参等)
练习:
定义 Person Animal ClassRoom Zoo 等类,加以体会。
 
三、对象的创建和使用
 

 

 

 

 

类的访问机制:
在一个类中的访问机制: 类中的方法可以直接访问类中的成员变量。
(例外: static 方法访问非 static 编译不通过。
在不同类中的访问机制: 先创建要访问类的对象,再用对象访问类中 定义的成员。
 

 

 

类的成员之一:属性

 

 

 

 

类的成员之二:方 法(method)  

 

 

注 意:
  1. 方法被调用一次,就会执行一次
  2. 没有具体返回值的情况,返回值类型用关键字void表示,那么方法体中可 以不必使用return语句。如果使用,仅用来结束方法。
  3. 定义方法时,方法的结果应该返回给调用者,交由调用者处理。
  4. 方法中只能调用方法或属性,不可以在方法内部定义方法。

 

 

方法的重载(overload)

public class PrintStream {
public static void print(int i) {……}
public static void print(float f) {……}
public static void print(String s) {……}
public static void main(String[] args) {
print(3);
print(1.2f);
print("hello!");
} }

 

使用重载方法,可以为编程带来方便。
  例如, System.out.println() 方法就是典型的重载方法,其内部的声 明形式如下
public void println(byte x)
public void println(short x)
public void println(int x)
public void println(long x)
public void println(float x)
public void println(double x)
public void println(char x)
public void println(double x)
public void println()

JavaSE 5.0 中提供了Varargs(variable number of arguments)机制,允许直接定

义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可

变的实参。

//JDK 5.0以前:采用数组形参来定义方法,传入多个同一类型变量

public static void test(int a ,String[] books);

//JDK5.0:采用可变个数形参来定义方法,传入多个同一类型变量

public static void test(int a ,String…books);

 

说明:

1. 声明格式:方法名(参数的类型名 ...参数名)

2. 可变参数:方法参数部分指定类型的参数个数是可变多个:0个,1个或多个

3. 可变个数形参的方法与同名的方法之间,彼此构成重载

4. 可变参数方法的使用与方法参数部分使用数组是一致的

5. 方法的参数部分有可变形参,需要放在形参声明的最后

6. 在一个方法的形参位置,最多只能声明一个可变个数形参

 

方法参数的值传递机制

 方法,必须由其所在类或对象调用才有意义。若方法含有参数:

形参:方法声明时的参数

实参:方法调用时实际传给形参的参数值

 Java的实参值如何传入方法呢?

Java里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。

  • 形参是基本数据类型:将实参基本数据类型变量的“数据值”传递给形参
  • 形参是引用数据类型:将实参引用数据类型变量的“地址值”传递给形参

方法的参数传递

 

 

递归 (recursion) 方法
递归方法:一个方法体内调用它自身。
方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执 行无须循环控制。
递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似于死 循环。
// 计算 1-100 之间所有自然数的和
public int sum(int num){
if(num == 1){
return 1;
}else{
return num + sum(num - 1);
} }
封装和隐藏
为什么需要封装?封装的作用和含义?
  •  我要用洗衣机,只需要按一下开关和洗涤模式就可以了。有必要了解洗衣机内 部的结构吗?有必要碰电动机吗?
  •  我要开车,…
  我们程序设计追求“高内聚,低耦合”。
  • 高内聚 :类的内部数据操作细节自己完成,不允许外部干涉;
  • 低耦合 :仅对外暴露少量的方法用于使用。
  隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提 高系统的可扩展性、可维护性。通俗的说 把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。
 
Java 中通过将数据声明为私有的 (private) ,再提供公共的( public
方法 : getXxx() setXxx() 实现对该属性的操作,以实现下述目的:
  1. 隐藏一个类中不需要对外提供的实现细节;
  2. 使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑, 限制对属性的不合理操作;
  3. 便于修改,增强代码的可维护性;

 

 

 

构造器(构造方法)

构造器的特征
  1. 它具有与类相同的名称
  2. 它不声明返回值类型。(与声明为void不同)
  3. 不能被staticfinalsynchronizedabstractnative修饰,不能有 return语句返回值
构造器的作用 创建对象;给对象进行初始化
  1. 如:Order o = new Order(); Person p = new Person(“Peter”,15);
  2. 如同我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的 构造器中加入完成“洗澡”的程序代码,于是每个“人”一出生就会自 动完成“洗澡”,程序就不必再在每个人刚出生时一个一个地告诉他们 要“洗澡”了。

 

 

 

 

 

public class Person { 
private String name;
private int age;
private Date birthDate;
public Person(String n, int a, Date d) {
name = n;
age = a;
birthDate = d; }
public Person(String n, int a) {
name = n;
age = a; }
public Person(String n, Date d) {
name = n;
birthDate = d; }
public Person(String n) {
name = n;
age = 30;
} }

 

 

 

 

public class JavaBean {
private String name; // 属性一般定义为private
private int age;
public JavaBean() {
}
public int getAge() {
return age; }
public void setAge(int a) {
age = a; }
public String getName() {
return name; }
public void setName(String n) {
name = n; } }

 关键字—this

this 是什么?
Java 中, this 关键字比较难理解,它的作用和其词义很接近。
  1. 它在方法内部使用,即这个方法所属对象的引用;
  2. 它在构造器内部使用,表示该构造器正在初始化的对象。
this 可以调用类的属性、方法和构造器
什么时候使用 this 关键字呢?
当在方法内需要用到调用该方法的对象时,就用 this
具体的:我们可以用 this 来区分 属性 局部变量
比如: this.name = name ;
 

 

 

 

关键字—package

 

 

 

 

关键字—import

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值