面向对象的三大特性:
封装:
我们把数据、一系列操作数据的函数封装到方法中,然后通过权限修饰符控制哪些方法可以让外知道,哪些只能自己知道,这样就能减少核心的数据被外界获取甚至破坏。
访问权限:
- public:对外公开,都可以拿来调用。
- private:私有的,只有自己可以看到。
- protected:受保护的,只有包内可见,包外的子包可见。
- default:只有包内可见
说通俗点,java里面的一个类或者一个方法都是封装,或着是可以直接拿来调用的都是封装。
再通俗点:你的手机可以看成一个类,属于封装了你的信息;你手机里面的app也是封装,它封装了好多功能。
封装的好处:
- 可以保护方法内部的代码不被修改,提高了安全性。
- 可以提高代码的复用性:比如小王调取了获取名字的接口,小李还可以调同样的获取名字的接口。
- 使得代码高内聚,低耦合:代码简洁,不同的模块之间更好的协作,之间的逻辑一目了然。
继承:
说白了就是站在巨人的肩膀上,比如最早的座机(只能打电话),然后大哥大(打电话+发短信)继承了座机,然后诺基亚(屏幕+打电话+发短信)继承了大哥大,现在触摸板手机(可触屏幕+打电话+发短信)继承了诺基亚
可以看到继承是在前人的基础上进一步的做出改变,言归正传回到java
java里面一个类可以继承另外一个类,获取被继承类的属性及方法供自己使用,其中如果一个类没有继承关系的话,它默认是继承的object类,java里面只能继承1个类
继承中的关键字:extends、super 、this、final
- extends:单一继承,可以让一个类继承一个父类
- super:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
- this:指向自己的引用。引用自身的属性和方法。
- final:当用final修饰类时,是把类定义为不能继承的,即最终类;
- 用于修饰方法时,该方法不能被子类重写:
- 用于修饰属性时,和static一起使用,表明为一个常量,各类的所有对象共用一个值
多态:
说白了就是多个可以标识你的外号,别人可以叫你名字,也可以叫你的外号,你就是多态(多种形态)。分为向上转型和向下转型:比如你的外号可以是爷爷也可以是孙子。
在java里面分为类多态和方法多态
类多态:这里Dog的外号就是向上转型Animails
Animals animals = new Dog();
方法多态:分为重写和重载
重写和继承类似,就是继承了父类的方法之后再做一些自己方法的改进。
重载是改变了原有的方法
如何区别重写和重载:
重写:
public class Persion {
public void say(String name){
System.out.println("名字是:"+name);
}
}
public class Student extends Persion{
public void say(String name) { //重写了父类的方法,方法名和参数相同
System.out.println(name+"是一个学生");
}
}
重载:
public void say(String name , String sex){}
public void say(String name,int age){ //重载方法,名字相同,但是传递参数的类型不同,系统能够判断,所以正确
}
public void say(String sex,String name){ //和第一个say具有相同类型的参数,所以系统无法判定,就会出现错误
}
补充:如果方法名和参数都一样,返回数据类型不一样的话算不算重载===>不算