1.面向对象:
特点:
a:将复杂的事情简单化。
b:面向对象将以前的过程中的执行者,变成了指挥者。
c:面向对象这种思想是符合现在人们思考习惯的一种思想。
类与对象:
面向对象的编程思想力图在程序中对事物的描述与该事物在现实中的形态保持一致。
为了做到这一点,面向对象的思想中提出两个概念,即类与对象。
类是对某一类食物的抽象描述,对象则是用来表示现实中该类事物的个体。
类与对象的关系:类是对象的模板,对象是类的实例。
类:
类是对象的抽象,用于描述一组对象的共同特征和行为。类中可以定义成员变量和成员方法,
其中成员变量用于描述对象的特征,也被称为属性。成员方法用于描述对象的行为,可简称为方法。
注意:只有定义在类中的变量才是成员变量,定义在成员方法中的变量是局部变量。
类与对象的基本使用:
在Java之中类是一个独立的结构体,所以需要使用class来进行定义,而在类中主要由属性和方法组成,那么在类中的属性就是一个个具体的变量,方法就是可以重复执行的代码。
示例:定义一个类
public class Person {//定义一个类,Person是类名
// //定义String变量 name,用来保存姓名
String name;
// 定义int变量 age,用来保存年龄
int age;
// 定义speak()方法
public void speak() {
int age = 18;//定义局部int变量age并赋值18
//下面这条语句输出打印的age值是18,不论成员变量age的值是多少
System.out.println("姓名:" + this.name +"永远年轻,永远" + age + "岁");
}
}
在这个类之中定义有两个属性(name、age)和一个方法speak()) 于是说现在有了类之后
如果想使用类,必须通过对象来完成,而如果要产生对象,则必须使用以下语法格式来完成
声明并实例化对象:类名称 对象名称 = new 类名称();
分步骤完成:
声明对象:类名称 对象名称 = null;
实例化对象:对象名称 = new 类名称();
当获取了实例化对象之后,那么就需要通过对象对类中的属性和方法调用
此时有两种调用方式:
调用类中的属性:实例化对象.成员属性;
调用类中的方法:实例化对象.方法名称();
当你不对属性值进行设置的时候,则该属性值为对应数据类型的默认值;
String 默认值为:null
int 默认值为:0
示例:使用对象操作类
public classJavaDemo{public static voidmain(String args[]){
Person p= new Person(); //声明并实例化对象
p.name = "张三"; //设置属性姓名值
p.age = 18 ; //设置属性年龄值
per.speak(); //进行方法的调用
}
}
执行结果:
如果不设置属性值执行结果:
面向对象三大特性:
a、封 装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
优点:将变化隔离;便于使用;提高重用性;安全性。
封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。
访问修饰符
访问级别 | 修饰符 | 同类 | 同包 | 子类 | 不同包 |
公开 | public | Y | Y | Y | Y |
受保护 | protected | Y | Y | Y | N |
默认 | default | Y | Y | N | N |
私有 | private | Y | N | N | N |
static: 关键字
我们可以一句话来概括:方便在没有创建对象的情况下来进行调用 。
特点:
1,想要实现对象中的共性数据的对象共享,可以将这个数据进行静态修饰。
2,被静态修饰的成员,可以直接被类名所调用。也就是说,静态的成员多了一种调用方式。类名.静态方式。
3,静态随着类的加载而加载,而且优先于对象存在。
缺点:
1,有些数据是对象特有的数据,是不可以被静态修饰的。
2,静态方法只能访问静态成员,不可以访问非静态成员。因为静态方法加载时,优先于对象存在,所以没有办法访问对象中的成员。
3,静态方法中不能使用this,super关键字。因为this代表对象,而静态在时,有可能没有对象,所以this无法使用。
this 关键字
1.this关键字代表当前对象
this.属性 操作当前对象的属性
this.方法 调用当前对象的方法。
2.封装对象的属性的时候,经常会使用this关键字。
3.当getter和setter函数参数名和成员函数名重合的时候,可以使用this区别。如:
public void setScreen(double screen){
this.screen=screen;
}
b、继承:继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,
也可以用父类的功能,但不能选择性地继承父类。通过使用继承可以提高代码复用性。继承是多态的前提。
优点:
1:提高了代码的复用性。
2:让类与类之间产生了关系,提供了另一个特征多态的前提。
java中对于继承,java只支持单继承。java虽然不直接支持多继承,但是保留了这种多继承机制,进行改良。
单继承:一个类只能有一个父类。
多继承:一个类可以有多个父类。
方法的重写:一般都是表示子类和父类之间的关系,。
重写的特征:
1:方法名必须相同,返回值类型必须相同
2:参数列表必须相同
3:访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。
4:子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。
5:构造方法不能被重写,
方法的重载:首先是位于一个类之中或者其子类中,具有相同的方法名,但是方法的参数不同,返回值类型可以相同也可以不同。
(1):方法名必须相同
(2):方法的参数列表一定不一样。
(3):访问修饰符和返回值类型可以相同也可以不同。
重载和重写的区别:
方法重载:在同一个类中,方法名必须相同,参数类型、个数、顺序不同,与返回值类型,访问修饰符无关。
方法重写:子类继承了父类原有的方法,子类中对父类已经存在的方法进行区别化的修改。
c、所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序 运行期间才确定,
即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必 须在由程序运行期间才能决定。
final关键字
使用final关键字做标识有“最终的”含义。
1:final修饰类,该类不能被继承。
2:final修饰方法,该方法不能被重写。
3:final修饰变量,该变量为常量。
4:final修饰对象,该对象不能被再次引用。
super关键字
在对象的内部使用,可以代表父类对象。
1:访问父类的属性:super.age
2:访问父类的方法:super.eat()
Object类
所有类的父类,也称超类。
Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另一个类,那么这个类默认继承Object类。
Object类中的方法,适合所有子类!!!