一:面向对象,继承,类,接口,多态。
1)类:使用类映射现实生活中的事物,其功能封装为方法,属性封装为成员变。
对象的内存图解
对象在内存中的位置:
对象由new关键字创建,如同数组,实体存在于堆内存中
任何事物均可以定义成类,创建对象,属于引用类型
而对象的引用变量是一个普通变量。存储的值是该对象堆内存中的地址。


匿名对象:
创建一个普通对象
Person p = new Person();
创建一个匿名对象
new Person();
匿名对象的特点
创建匿名对象直接使用,没有变量名。
new Person().eat() //eat方法被一个没有名字的Person对象调用了。
匿名对象在没有指定其引用变量时,只能使用一次。
new Person().eat(); 创建一个匿名对象,调用eat方法
new Person().eat(); 想再次调用eat方法,重新创建了一个匿名对象
匿名对象可以作为方法接收的参数、方法返回值使用
2)继承:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。
继承的定义及使用格式
在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。
格式:
class 子类 extends 父类 {
父类内容,子类可以使用 (supper)
子类特有内容,可以写在子类中.
}
继承特点
Java支持单继承
Java支持多层继承
父类定义了继承树中共性内容,子类定义了该类个性内容。
3)多态:
多态是继封装、继承之后,面向对象的第三大特性。
如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。
多态体现:
多态体现为父类引用变量可以指向子类对象。
多态的前提是必须有子父类关系或者类实现接口关系,否则无法完成多态。
在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。
可以调用一切父类的方法,子类特有的方法将不能调用。
父类类型 变量名 = new 子类类型();
变量名.方法名();
多态的使用场景:
我们一般在以下场景当中使用多态:
成员变量赋值、局部变量赋值
方法传参(最常用最能体现出多态优点的应用)
返回返回值
多态的存在意义:
配合继承与方法重写提高了代码的复用性与扩展性,如果没有方法重写,则多态同样没有意义
多态本身是子类类型向父类类型向上转型的过程。
多态的转型分为向上转型与向下转型两种:
向上转型:当有子类对象赋值给一个父类引用时,便是向上转型,多态本身就是向上转型的过程。
使用格式:
父类类型 变量名 = new 子类类型();
如:Person p = new Student();
向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用转为子类引用,这个过程是向下转型。如果是直接创建父类对象,是无法向下转型的!
使用格式:
子类类型 变量名 = (子类类型) 父类类型的变量;
如:Student stu = (Student) p; //变量p 实际上指向Student对象
接口概念
接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。
接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。
请记住:一切事物均有功能,即一切事物均有接口。
定义格式:
public interface 接口名 {
抽象方法1;
抽象方法2;
抽象方法3;
}
使用interface代替了原来的class,其他步骤与定义类相同:
接口中的方法均为公共访问的抽象方法
接口中无法定义普通的成员变量
接口中成员的特点
接口中只能有常量。
接口中只能有抽象方法。
接口不可以创建对象。
子类必须覆盖掉接口中所有的抽象方法后,子类才可以实例化。否则子类是一个抽象类。
Java支持一个类同时实现多个接口,或一个接口同时继承多个接口。
类可以在继承一个类的同时,实现多个接口。
接口与父类的功能可以重复,均代表要具备某种功能,并不冲突。
本文深入探讨面向对象编程的核心概念,包括类、对象、继承、接口与多态。解析对象内存布局,匿名对象特性,以及继承与多态在代码复用与扩展中的关键作用。并介绍了接口的概念及其在功能定义与实现分离中的应用。

被折叠的 条评论
为什么被折叠?



