Java封装继承多态
封装:
封装:
Encaplation
用private将不期望被外界访问的方法和属性隐藏起来
**封装对于类的开发者和使用者都有好处:**
- 对于类开发者:
能够让数据得倒保密 得到隐藏 从而更加安全 - 对于类的使用者:
能够让使用者将经理 全部集中在核心业务逻辑上
类的开发应当高内聚 低耦合
-—————- 内聚:独立完成功能的能力 - 自强不息 自己的事情自己做
-——————耦合:模块与模块之间的依赖关系
所有的属性应当用private修饰
-——————并且提供两个public方法 setter getter
可以给设置和得到属性一种统一的方式 有助于代码的解耦
可以让程序员拿回主动权 让程序员决定 是否需要用户设置和得到属性
所有方法应当考虑:
一个方法究竟是给外界提供的核心方法 还是给核心方法服务的方法
核心方法用public修饰
给核心方法服务的方法应当用private对外屏蔽
class Teacher{
private String name;
private int age;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
//吃饭的方法
private void eat(){
System.out.println("吃饭啦!");
}
//睡觉的方法
private void Sleep(){
System.out.println("睡觉啦!");
}
//还会LOL
private void LOl(){
System.out.println("LOL!");
}
//我的核心方法
public void teach(){
sleep();
eat();
LOL();
SYstem.out.println("I am a techer!");
}
}
继承:
extend 建立两个类之间 is a的关系
- *:Java中的类 全部继承Object
- *:Java当中的类只支持单根继承 接口是允许多重继承的
关于继承:
关于私有属性 有没有继承 能不能继承 算不算继承
- 私有属性在子类的存储空间当中它是切实存在的
- 但是是由于Java当中创建对象的流程所决定的
- private 访问控制权限修饰符
多态:
Polymorphism
- 静态多态 编译多态:java当中的方法重载
- 动态多态 运行时多态:一个对象总有多种称呼他的类型 一个事物总有多种存在的形态
*: 动态多态出现肯定会伴随着一种语法:
+ 父亲类型 = 子类对象;
+ 接口类型 = 实现类对象;
多态需要注意什么?
对象是在内存中客观存在的 不会因为改变称呼它的类型而发生任何便把
但是编译器看等号左边的类型进行语法检查
多态存在的价值?
*:能够让先开发完成的类型在不做任何修改的情况下 跟之后开发出来的新的类型结合起来使用 而且不需要改变
*:多态的存在能够降低人与人 组与组之间的耦合关系
public class TestPoly{
public static void main(String[] args ){
Restaurant = new Restaurant();
Chinese xiaoBo = new Chinese();
American xiaoAo = new American();
kfc.service(xiaoBo);
kfc.service(xiaoAo);
}
}
class Restaurant{//餐厅
//传统方式 过耦合
public void service(Chinese xiaoAo){
xiaoAo.eat();
}
public void service(Japanse xiaoAn){
xiaoAn.eat();
}
public void service(American xiaoAa){
xiaoAa.eat();
}
//多态的应用
public void service(People xiaoRen){
xiaoRen.eat();
}
}
//多态
public void service(People )
class People{
public void eat(){
System.out.println("人类吃饭!");
}
}
class Chinese extends People{
public void eat(){
System.out.println("中国人吃水饺");
}
}
class American extends People{
public void eat(){
System.out.prinlnt("美国人吃牛排");
}
}
还没有评论,来说两句吧...