面向对象概念
什么是面向对象:
面向对象,以对象为核心,强调事件的角色,主体。在宏观上,使用面向对象进行把控,而微观上,依旧是面向过程。
面向对象的特性:
封装、继承、多态是面向对象的三大特性,这是任何一门面向对象编程语言都要具备的。
封装:指隐藏对象的属性和实现细节,仅对外提供公共的访问方式。
继承:继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例属性和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
多态:指的是同一个方法调用,由于对象不同可能会有不同的行为。
类与对象:
类:定义了对象具有的特征和行为,类是对象的模板
对象:拥有多个特征和行为的实体,对象是类的实例
面向对象编程
类的定义:
public class student{
String name;
int age;
void eat(Stringfood){
System.out.printl(name+"吃"+food);
}}
创建了一个student类拥有name和age变量以及及eat()方法
对象的创建和使用:
Student student1=newStudent();
//使用对象名,成员变量名操作变量
student1.age=18;
//使用对象名,成员方法名调用方法
student1.study();
//创建一个对象
注意:成员变量和成员方法隶属于对象,不同对象之间的成员变量占用不同的地址空间,互不影响
关键字
this关键字
this关键字可以调用成员变量,成员方法,构造方法。但需注意的是,成员方法中不能使用this关键字调用构造方法,当使用this关键字调用构造方法时,它必须出现在构造方法的第一行
this.x=x;
static关键字
在类中,将与成员变量同级的用static修饰的变量称为静态变量或类变量。静态变量优先于对象存在,随着类的加载就已经存在,该类的所有实例共用这个静态变量,即共用同一份地址空间想调用静态变量时,可以使用变量名,变量名进行调用。
Static关键字也可以修饰方法,用static修饰的方法称为静态方法或类方法。静态方法同样属于类的,优先于对象存在,调用方式与静态变量相同。
super关键字
Super可以理解为直接父类对象的引用,或者说super指向子类对象的父类对象存储空间,可以通过super访问父类中被子类覆盖的方法或属性
除private修饰的属性和方法外,子类可以通过super关键字调用父类中的属性和方
去,它的作用是解决子类和父类中属性、方法重名问题的。
super关键字可以调用父类的属性、方法(包括构造方法、成员方法),它的使用方式与this关键字非常相似
final关键字
final关键字,它可用来将一个变量声明成常量,事实上,final 关键还有其他场景的用法。final的意思为最终,不可变。final是一个修饰符,它可用来修饰类中的属性和方法以及局部变量,但是不能修饰构造方法。final 的用法主要有下面4种:
1.final修饰的类不可以被继承,但是可以继承其他类。
2.final 修饰的方法不可以被重写。
3.final修饰的变量是常量,只能被赋值一次。
4.final修饰的引用类型变量不能改变它的引用地址,但是可以改变对象内部属性的值。
三大特性
多态:
多态是面向对象的三大特征之一,指的是同一个方法调用。由于对象不同,可能会有不同的行为。多态的前提是必须存在继承,并且子类重写了父类的方法。最重要的一点是,父类引用要指向子类对象
people people=new Teacher();
封装:
封装是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式
private:表示私有的,被它修饰的方法、变量只能被当前类访问,因此也称作类可见性。
无修饰符:表示默认的,被它修饰的方法、变量只能被当前包下的类访问,因此也称作包可见性。
protected:表示受保护的,被它修饰的方法、变量可以被当前包下所有的类他包下的子类访问到,因此也称作子类可见性。
public:表示公开的,被它修饰的方法、变量可以被当前项目下所有的类访问,因此也
称作项目可见性。
继承:
继承使用extends关键字。从英文字面意思理解,extends的意思是“扩展”,即继承是在现有类的基础之上构建出的一个新类,现有类被称作父类(也称作超类、基类等),新类称为于类(派生类),子类拥有父类所有的属性和方法,并且还可以拥有自己独特的属性和方法。
class 父类{
}
class子类extends父类{
}
包
类的访问与导包:
一般来说,定义类都需要定义在包下,。当要使用一个类时,这个类与当前程序在同一个包中,或者这个类是JAVA lang,包中的类时通常可以省略包名,直接使用该类,其余情况下,使用某一个类必须导入包使用import关键字导入JAVA中的包
import 包名,类名;
通过import关键字指定要导入哪个包下的哪个类,比如 import java.util.Scanner就导入了java.util 包下的Scanner类,而其他包中的Scanner类则不受影响。此外,前面使用到String类,而该类在java.lang包下,因此可以省略导包。
当要使用到两个名称一样的类时,就需要以包名.类名的方式使用了,包名.类名的形式也称为一个类的全类名。
抽象类与object类
抽象类:
注意五点:
(1)抽象方法只有方法声明,没有方法体,它必须交给子类重写。子类重写抽象方法,也称作“实现”抽象方法。
(2)子类如果也是抽象类,则不一定需要实现父类的抽象方法,而如果不是抽象类,则必须实现父类中所有的抽象方法。
(3)抽象方法必须被子类重写,因此抽象方法的访问修饰符不能是private。
(4)由于抽象方法没有具体的方法体,无法用一个抽象的对象调用它,因此抽象类不能被实例化。
(5)抽象类可以有构造方法,它的构造方法的作用是便于子类创建对象时给抽象类的属性赋值
object类:
java.lang.Object类是Java中所有类的父类(包括数组),如果一个类没有用extends关键字继承其他类,那么它默认就继承Object类。Java中这么设计的目的是让所有类都拥有些基本的方法,这些方法都定义在Object类中,并且它们中的一部分可以被重写。
接口
当抽象类中的方法都是抽象方法的时候,该抽象类可以用另外一种形式定义和表示,那就是接口 interface。接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范地对子类进行约束。
抽象类还提供某些具体实现,接口不提供任何具体实现,接口中的所有方法都是抽象) 法。接口是完全面向规范的,规定了一批类具有的公共方法规范。
在Java中,接口的作用主要有两种。
(1)提供一种扩展性的功能,如实现了Serializable接口的类就拥有了序列化的功能,实现了Clonable接口的类就拥有了克隆的功能。
(2)提供一种功能上的约束,或者说是一种规范。比如在面向接口开发的编程思想中,创建了OrderService接口,效定了接口中拥有订单的增加、删除、修改、查询方法,那么不管是什么订单,只要实现了OrderService接口,就必须拥有这4个方法。
接口的定义:
interface 接口名[extends,父接口1,父接口2]{
//常量定义
//方法定义
}