- 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)
- 其三大特征:封装,继承,多态;
- 封装:解决数据的安全问题。
- 继承:解决代码的重用问题。
- 多态:解决程序的拓展问题。
封装(Encapsulation)
-
个人理解:将该类的代码和数据包装,隐藏起来,形成一个保护屏障;同时要想访问该的代码和数据,必须通过严格的接口控制;
-
优点:
- 减少耦合(具体包括哪些耦合?代码,功能)。
- 便于修改自身结构。
- 便于内部管理(成员变量),高度的中央集权。
- 简洁方便,便于调用。
- 例如:常用的JavaBean;
- 先定义该类的(私有)属性,以及相关的公用方法;
- 在调用该类时,直接创建该类的实例对象,调用公用方法即可;便可达到上述优点;
继承
- 个人理解:为了解决相同,类似的问题,将二者相似,共有的属性行为,提取出来进而新建父类,通过继承的方式解决代码量大且臃肿;同时可以增加后期代码可维护性;
- 格式
class father {
}
class daughter extend father {
}
-
注
- Java不支持多继承,多继承通过接口实现;
- Java支持多重继承,即可理解为爸爸继承爷爷,孙子继承爸爸,进而实现孙子继承爷爷;
- 子类无法继承父类私有方法;
- 子类可以拥有自己私有方法,同时可以对父类进行拓展;
- Java所有类都继承与java.lang.Object;
-
关键字使用:
- super 和 this:前者用来引用当前对象的父类;后者用于对自己的引用;
- final 最终类,无法被继承;
-
对于构造器,不懂(需要的朋友可以自行学习,并推荐给本人);
多态
-
个人理解:面对一行为,具有多种不同表现形式,多态性是对象多种表现形式的体现;
-
作用:使程序具有良好的拓展,可以对所有类的对象进行通用处理;
-
理解,从未使用过,概念模糊;
-
多态的实现方式:
- 重写
- 接口
- 抽象类和抽象方法
-
补充:
对于重写与重载:- 参数列表与被重写方法的参数列表必须完全相同;
- 重载在一个类中,方法名字相同,参数不同,返回类型可相同也可不同;
- 代码参考:
public class Overloading {
public int test(){
System.out.println("test1");
return 1;
}
public void test(int a){
System.out.println("test2");
}
//以下两个参数类型顺序不同
public String test(int a,String s){
System.out.println("test3");
return "returntest3";
}
public String test(String s,int a){
System.out.println("test4");
return "returntest4";
}
public static void main(String[] args){
Overloading o = new Overloading();
System.out.println(o.test());
o.test(1);
System.out.println(o.test(1,"test3"));
System.out.println(o.test("test4",1));
}
}
Console:
test1
1
test2
test3
returntest3
test4
returntest4
- 总结:
- 方法重载,同类下多个同名方法,参数数量不同,类型不同,次序不同;
- 方法重写,子类存在与父类同名方法,参数个数,类型相同,返回值相同。
- 前者是一个类的多态性体现,后者则是子类与父类的一种多态性表现;