Java语言 人人精通 卷起来
面向对象(上)
面向过程:
面向
面向对象的三个特征
封装
封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想。
继承
继承主要描述的就是类与类之间的关系,通过继承,可以在无须重新编写原有类的情况下,对原有类的功能进行扩展。
多态
多态指的是在一个类中定义的属性和功能被其他类继承后,当把子类对象直接赋值给父类引用变量时,相同引用类型的变量调用同一个方法所呈现出的多种不同行为特征。
对象的创建和使用方法
什么是类
类是对一类事物的描述(属性,行为),是抽象的
类的定义:成员变量(对应事物的属性)
成员方法(对应事物行为)
什么是对象
对象是一类事物的实例,是具体的
对象是类的一个实例
类的定义和对象的创建
举例
定义一个student类
/*
定义一个student类,用来模拟“学生”事物,其中就有两个组成部分
属性:姓名,年龄
行为:吃饭,睡觉,学习
对应到Java的类中,
成员变量:定义在类当中,方法外边
成员方法:不要写static关键字
*/
public class Student {
//成员变量
String name;
int age;
//成员方法
public void eat() {
System.out.println("吃饭!");
}
public void sleep() {
System.out.println("睡觉!");
}
public void study() {
System.out.println("学习!");
}
}
student对象的创建和使用
/*
类的使用
通常情况下,一个类并不能直接使用,需要根据类创建一个对象,才能使用。
1.导包
import 包名称.类名称
对于和当前类属于同一个包的情况,可以盛磊导包语句不写。
2,创建对象
类名称 对象名 = new 类名称();
3.使用
使用成员变量:对象名.成员变量名
使用成员方法:对象名.成员方法名(参数)
*/
public class Usestudent {
public static void main(String[] args) {
Student stu = new Student();
//成员变量赋值
stu.name = "刘源";
stu.age = 18;
System.out.println(stu.name);
System.out.println(stu.age);
stu.eat();
stu.sleep();
stu.study();
}
}
练习:定义一个手机类
public class Phone {
String brand;
double price;
String color;
public void call(String who){
System.out.println("给"+ who + "打电话");
}
public void sendMessage(){
System.out.println("群发短信");
}
}
手机对象的创建以及使用
public class Usephone {
public static void main(String[] args) {
Phone phone = new Phone();
phone.brand = "华为";
phone.price = 4888.0;
phone.color = "黑色";
System.out.println(phone.brand);
System.out.println(phone.price);
System.out.println(phone.color);
phone.call("刘源");
phone.sendMessage();
}
}
一个对象的内存图
使用对象类型作为方法的参数
使用对象类型作为方法的返回值
访问控制符
访问控制符 | 访问范围 |
---|---|
private | 同一类中 |
defautl | 同一类中,同一包中 |
protected | 同一类中,同一包中,子类中 |
public | 全局范围 |
类的封装方式
为什么需要封装
为了避免出现不合理的问题,在设计一个java类时,应该对成员变量的访问作出一些限定,不允许外界随意访问。这就需要实现类的封装
如何实现封装
将类中的属性私有化,即使用private关键字来修饰,setter and getter 方法
掌握方法的使用方式
方法的重载和递归
方法的重载(overload)
方法函数名相同,但是参数不同(参数个数或者类型不同)
方法的递归
方法的递归是指在一个方法的内部调用自身的过程。递归必须要有结束条件。
构造方法
如果需要在实例化对象的同时就为这个对象的属性进行赋值,可以通过构造方法来实现。
构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。
构造方法语法格式与成员方法的语法格式相似
不同的是需要同时满足以下三个条件
1.方法名与类名相同
2.在方法名的前面没有任何返回值类型的声明
3.在方法中不能使用return语句返回一个值,但是可以单独写return语句来作为方法的结束
构造方法也可以重载
在java中的每个类都至少有一个构造方法,如果在一个类中没有显示的定义构造方法,系统会自动为这个类创建一个默认的构造方法,这个默认的构造方法没有参数,在其方法体中没有任何代码,即什么也不做。
掌握this 和 static 关键字的使用
this 关键字
Java中提供了一个this关键字来指代当前对象,用于在方法中访问对象的其他成员。
this关键字的3种常见的用法
1.通过this关键字调用成员变量,解决与局部变量名称冲突问题。
2.通过this关键字调用成员方法
3.通过this关键字调用构造方法
this关键字调用类的构造方法时,注意以下几点
1.只能在构造方法中使用this调用其他的构造方法,不能在成员方法中使用
2.在构造方法中,使用this调用构造方法的语句必须是该方法的第一条执行语句,且只能出现一次。
3.不能在一个类的两个构造方法中使用this互相调用。
static关键字
在java中定义了一个static关键字,它用于修饰类的成员,如成员变量,成员方法以及代码块,被static修饰过的成员具备一些特殊性
静态变量:
使用static关键字来修饰成员变量,该变量被称作静态变量,它可以被所以实例所共享。
静态变量的访问:
类名.变量名
只能用于修饰成员变量,不能用于修饰局部变量
静态方法
想要使用类中的成员方法,需要先将这个类实例化,而在实际开发中,有时会希望在不创建对象的情况下就可以调用某个方法,这种情况下就可以使用静态方法。在类中定义的方法前加上static关键字。
静态方法的访问
类名.方法名
实例对象名.方法