**JAVA入门基础5**(系列更新)———面向对象的基础1---封装
系列内容索引:
1、Java前置知识学习 什么是Java Java的由来与发展 Java能做什么(语言漫谈,语言的本质是一种约束) 为什么要学Java? Java JDK安装(顺带讲一下Java运行机制) Java环境变量配置 Java利器——idea 安装与使用
2、 Java基础1: 注释 标识符和关键字 数据类型(基本类型、引用类型) 类型转化 Scanner类讲解 简单的helloword程序
3、Java基础2: 变量、常量、作用域 基本运算符(加减乘除、取余、逻辑运算符) 流程控制(if、switch、while、do-while、for、增强for循环(如果可以,原理也可以讲下)、break、continue、goto等等) (作业可以类似于打印九九乘法表)
4、 Java基础3: 包机制 方法(什么是方法、定义与使用、方法的重载、可变参数的传递) 数组(什么是数组、数组的声明与创建、二维数组)
5、 面向对象1(封装与抽象):封装(何为封装、为何要封装、封装的简单案例) 类和对象的创建 构造器的使用 创建简单的对象类并赋予相应方法
6、面向对象2(继承与接口):问题引入(给定一个场景,引导思考,紧接着引出继承) Java的继承机制 抽象类和抽象方法(abstract) 面向接口编程(接口是什么,怎么用接口,使用接口的好处) 继承与接口的区别
问题思考
1、什么是面向对象?
将相关的数据和方法放在一起,组合成一种新的复合数据类型,然后使用新创建的复合数据类型作为项目的基础。
2、什么是对象?
java中的对象也具有它的状态和行为,只不过需要我们自己抽象出来。简单的来说就是模仿现实世界然后用语言创建出来。
一系列行为与属性的一个集合
3、面向对象的程序设计与面向过程的程序设计有什么区别?
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。“面向过程”也可称之为“面向记录”编程思想,他们不支持丰富的“面向对象”特性(比如继承、多态),并且它们不允许混合持久化状态和域逻辑。
问题与模型
4、当我们谈及面向对象时,我们所关心的是什么?
面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石。
面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言。
面向对象的编程有三大特性:封装、继承和多态。
而我们今天聚焦于封装。
由String类引入封装
大家前几天上课都着重于Java的基础语法,其中在讲数据类型时,应当是区分了基本类型与引用类型,其中,用的最多的引用类型,就是String。
//ctrl+B跳转查看Java源码。
如何去创建一个类?-》构造器,”this“
如何去设计一个类?
如何去封装一个类?
知识储备
this关键字
构造器
-
构造函数名称必须与其类名称相同
-
构造函数必须没有显式返回类型
构造器分为两种:
-
默认构造函数(无参数构造函数)
-
参数化构造函数
修饰符
修饰符/位置 | 类内部 | 本包 | 子类 | 外部包 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
不那么”面向对象“的设计——static关键字
static静态代码块:
执行顺序:静态代码块->非静态代码块->构造函数
import static:
import static java.lang.Math.*;
public class StaticImportTest {
public static void main(String[] args) {
// out是java.lang.System类的静态成员变量,代表标准输出
// PI是java.lang.Math类的静态成员变量,表示π常量
out.println(PI);
// 直接调用Math类的sqrt静态方法,返回256的正平方根
out.println(sqrt(256));
}
}
作业
1、设计两个类,每个类中需要有三个以上属性,get,set方法,构造器,以及额外定义三个以上的方法,思考这两个类之间如何交互,最好能体现在代码里面。
作业如下:
import java.util.Scanner;
//一个简单输入age并检测是否符合范围的程序
public class demo6 {
private int age;
public static boolean flag=false;
//提供方法来操作age属性
public void setAge(int age) {
if (age > 130 || age < 0) {
System.out.println("您的年龄必须要在0~130之间");
} else {
this.age = age;
flag=true;
}
}
public int getAge() {
return this.age;
}
public boolean judge() {
return flag;
}
}
class doit{
public static void main(String[] args) {
System.out.println("请输入你的年龄");
Scanner sc = new Scanner(System.in);
int i = Integer.parseInt(sc.next());
demo6 dd = new demo6();
dd.judge();
dd.setAge(i);
if (dd.judge()) {
System.out.println("你的年龄为:");
System.out.println(dd.getAge());
}
}
}
运行结果: