JAVA
面向对象
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候依次调用就可以了。面向对象则是把构成问题的事物按照一定规划分为多个独立的对象,然后通过调用对象的方法来解决问题
面向对象的特点可以概括为封装,继承,多态,接下来针对这三种特性进行简单介绍。
JAVA中的类与对象
类的定义
类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体
在面向对象的思想中,最核心的就对象。为了在程序中创建对象,首先需要定义一个类
JAVA中的类是通过class关键字来定义的,其语法格式如下
[修饰符]class 类名 [extend 父类名][implements 接口名]{
//类体,包括类的成员和成员方法}
声明成员变量的语法格式如下:
[修饰符] 数据类型 变量名 [=值];
在上述语法格式中,修饰符为可选项,用于指定变量的访问权限。变量名是变量的名称它可以赋予初始值,也可以不赋值。通常情况下,将没有赋值的变量称为声明变量,而赋值(初始化)的变量称为定义变量。
定义一个方法的语法格式如下:
[修饰符][返回值类型] 方法名 ([参数类型 参数名1,参数类型 参数2,…]){
//方法体
.
.
.
return 返回值;//当方法的返回值类型为void时,return及其返回值可以省略
}
这里我们引入一个例子来说明一下
package com.itheima;
public class Person {
int age; // 声明int类型的变量age
// 定义 speak() 方法
void speak() {
System.out.println("我今年" + age + "岁了!");
}
}
上例中定义了一个Person类,并在类中定义了类的成员和成员方法。其中Person是类名,age是类的成员变量,speak()是类的承成员方法。在成员方法speak()中可以直接访问成员变量age
对象的创建
在JAVA中使用new关键字来创建对象 具体语法格式如下:
类名 对象名称 = new 类名();
例如,创建Person类的实例如下:
Person p = new Person();
访问控制符
在JAVA中,针对类,成员方法,和属性提供了四种访问级别 分别是private,default,protected和public.
通过一个图将这四种控制级别由小到大依次列出
访问控制级别如下图所示
访问范围 | private | default | protected | public |
---|---|---|---|---|
同一类中 | √ | √ | √ | √ |
同一包中 | √ | √ | √ | |
子类中 | √ | √ | ||
全局范围 | √ |
封装
封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体的实现细节
为什么要进行封装?
这里我们通过一个例子来了解
package com.itheima.example03;
class Person{
String name;
int age;
public void speak(){
System.out.println("我叫"+name+",今年"+age+"岁了");
}
}
public class Example03 {
public static void main(String[] args) {
Person p = new Person();
p.name = "张三";
p.age = -18;
p.speak();
}
}
在上例中的代码中,将年龄赋值为一个负数,在这语法上不会有任何问题,因此程序可以正常进行,但在现实生活中明显是不合理的。为了避免出现这种不合理的问题,在设计一个JAVA类时,应该对成员变量的访问做出一些限定,不允许外界随意访问。这就需要类的封装
如何实现封装
具体的实现过程是,在定义一个类是,将类中的属性私有化,即使用private关键字来修饰,私有属性只能在它所在类中被访问,如果外界想要访问私有属性,需要提供一些使用public修饰的公有方法,其中包括用于获取获取属性值的getXxx()方法和设置属性值的setXxx()方法 接下来通过一个例子演示如何实现类的封装
package com.itheima.example04;
class Person{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age <= 0){
System.out.println("您输入的年龄不正确!");
} else {
this.age = age;
}
}
public void speak(){
System.out.println("我叫"+name+",今年"+age+"岁了");
}
}
public class Example04 {
public static void main(String[] args) {
Person p = new Person();
p.setName("张三");
p.setAge(-18);
p.speak();
}
}
运行结果为
您输入的年龄不正确!
我叫张三,今年0岁了
继承
继承主要面熟的就是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行拓展
多态
多态指的是在一个类中定义的属性和功能被其他类继承后,当把子类对象直赋值给父类引用变量时,相同引用类型的变量调用同一个方法所呈现出的多种不同行为特性
…to be continue
以上材料节选自黑马程序员 JAVA入门基础第二版