Day_07面向对象与类
一.面向对象
1.定义:面向对象(Object Oriented Programming)是一种编程的思想,通过这种思想可以把生活中的复杂事情简化,从原来的执行者变成了指挥者。面向对象是基于面向过程而言的。
2.例子对比
面向过程:打开冰箱,把大象放进去,关上冰箱。
面向对象:饿了,打开美团外卖。
3.三大特征
<1>封装性:把相关的数据封装成一个类组件。
<2>继承性:子类自动共享父类的属性和方法。
<3>多态:增强软件的灵活性和重用性。
二.类和对象
1.类:Java语言最基本的单位,是一类事物的抽象。
2.对象:每个对象具有三个特点,分别是<对象的状态>,用于描述对象的基本特征。<对象的行为>,用于描述对象的功能,以及<对象的标识>,指对象在内存中都有一个唯一的地址来区分其他对象。
3.类和对象的关系:用Java语言描述,通过类来描述事物,把事物的属性当做成员变量,把行为当做成员方法。
4.分析案例:分析手机。
<1>属性(成员变量):颜色,尺寸,品牌,价格。
<2>行为(成员方法):打电话,发短信,听音乐。
<3>类:手机类,抽取相同的属性和行为。
<4>对象:按照模板生产很多手机,比如1号手机,2号手机以及n号手机,各自包含他有的成员变量和成员方法。
三.类的创建使用
public class Class_Create {
public static void main(String[] args) {
Person p = new Person();//p是引用对象,持有了对Person对象的地址值的引用。
= "Yan Dexuan";//设置属性值。
p.age = 24;
p.eat();//调用成员方法。
p.sleep();
}
}
class Person{//Person类
String name;//成员变量。
int age;
public void eat() {//成员方法。
System.out.println("吃饭");
}
public void sleep() {
System.out.println("睡觉");
}
}四.创建多个类
public class Class_Create2 {
public static void main(String[] args) {
Person1 p1 = new Person1();
= "Yan Dexuan";
p1.age = 24;
Person1 p2 = new Person1();
= "bad";
p2.age = 23;
}
}
class Person1{
String name;
int age;
public void eat() {
System.out.println("吃");
}
public void sleep() {
System.out.println("睡");
}
}五.对象在内存中的存储
1.一般来讲,局部变量存在于栈中,方法执行完毕之后内存就被释放。
2.对象存在于堆中,当对象不再被使用时,内存就会被释放。
3.每个堆内存的元素都有地址值。
4.对象中的属性都是有默认值的。
六.封装
1.定义:封装是指隐藏对象的属性和实现细节,仅仅对外提供公共的访问方式。
2.优点:提高安全性和重用性。
3.private关键字:是权限修饰符,用于修饰成员变量和成员函数,被私有化的额成员只能在本类中访问,要修改只能提供对外提供的公共的get和set方法。
七.简单封装案例
public class Class_Package {
public static void main(String[] args) {
Student s = new Student();
/* = "Yan Dexuan";
System.out.println();*/
s.setName("Yan Dexuan");//利用set给属性赋值。
System.out.println(s.getName());//利用get给属性取值。
}
}
class Student{
private String name;//隐藏成员变量。右键source后设置get和set方法。
public String getName() {//设置公共的取值方法。
return name;
}
public void setName(String name) {//设置公共的赋值方法。
thi = name;
}
}八.创建Teacher类和对象
public class Class_Teacher {
public static void main(String[] args) {
Teacher t = new Teacher();
= "Yan Dexuan";
t.age = 24;
t.address = "China";
System.out.println();
System.out.println(t.age);
System.out.println(t.address);
t.teach();
}
}
class Teacher{
String name;
int age;
String address;
public void teach() {
System.out.println("讲课");
}
}九.创建Plane类和对象
public class Class_Airplane {
public static void main(String[] args) {
Plane p = new Plane();
p.Fly();
p.Takeoff();
p.color = "Red";
p.number = 1;
p.band = "Nike";
p.price = 1000.0;
System.out.println(p.color);
System.out.println(p.number);
System.out.println(p.band);
System.out.println(p.price);
}
}
class Plane{
String color;
int number;
String band;
double price;
public void Fly() {
System.out.println("飞行");
}
public void Takeoff() {
System.out.println("降落");
}
}十.创建对象的流程
Person p = new Person();这行代码的过程如下:
1.把Person.class文件加载进内存。
2.在栈内存中,开辟空间,存放变量p。
3.在堆内存中,开辟空间,存放Person对象。
4.对成员变量进行默认的初始化。
5.对成员变量进行显示的初始化。
6.执行构造方法(如果有构造代码块,就先执行它)。
7.堆内存完成。
8.把堆内存的地址赋值给变量p,p就是一个引用变量,引用了Person对象的地址值。
















