java面向对象的三大特性

面向对象OOP 通常说的oop其实是面向对象的程序设计 Object Oriented Programming

基本思想:万物皆对象 认识类与对象

类(Class):类是具备某些共同特征的实体的集合,它是一种抽象的概念,用程序设计的语言来说,类是一种抽象的数据类型,它是对所具有相同特征实体的抽象。

对象(Object):类的实例,每个对象都具有属性和方法这两方面的特征。对象的属性描述了对象的状态和特征,对象的方法说明了对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。

二者关系:类是对象的集合,对象是类的实例

面向对象三大特性 封装Encapsulation 继承Inheritance 多态Polymorphism

封装Encapsulation 一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。

(1)、修改属性可间性(private仅内部可见) (2)、设置setter / getter 方法,即赋值和取值 (3)、设置属性的存取限制

静态代理模式staticProxy体现了封装的思想

public interface PersonRun {     

public void run();

}

public class KGCinstall implements PersonRun{     

public void run() {         

System.out.println("我跑了很大一圈400米");     

}

}

静态代理的演示 public class StaticProxy implements PersonRun{     

private PersonRun pr = new KGCinstall();   

 public void run() {     

pr.run();//逻辑判断 什么时候才会执行KGCinstall类的run方法   

 }

}

public class Test {   

 public static void main(String[] args) {         

PersonRun  pr = new StaticProxy();//在调用的话调用的是       

 pr.run();                                      

   }

}

继承Inheritance java中使用extends关键字来表示继承关系。当创建一个类时,如果没有明确指出要继承的类,就总是隐式地继承Object,也就是说Object是所有类的父类。

比如下面这段代码: class Person {                  

 class Man extends Person {  

 public Person() {  }                       

   public Man() {}    

    }                                

}

类Man继承于Person类,这样一来的话,Person类称为父类(基类),Man类称为子类。 如果两个类存在继承关系,则子类会自动继承父类的方法和变量,在子类中可以调用父类的方法和变量。

java中,只允许单继承,也就是说 一个类最多只能显示地继承于一个父类。但是一个类却可以被多个类继承,也就是说一个类可以拥有多个子类。

1、子类继承父类的成员变量和成员方法 当子类继承了某个类之后,便可以使用父类中的成员变量和方法,但是并不是完全继承父类的所有成员变量和方法。

具体的原则如下:

(1)能够继承父类的public和protected修饰的成员变量和方法;不能够继承父类的private成员变量和方法;

(2)对于父类的包访问权限成员变量和方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;

(3)如果子类中出现了同名的成员方法或是成员变量,子类的成员变量和方法会覆盖掉父类同名的成员方法或变量,要是想访问,需用super关键字调用

2、构造器 子类是不能够继承父类的构造器,但是要注意的是,

(1)如果父类的构造器都是带有参数的,则必须在子类的构造器中显示地通过super关键字调用父类的构造器并配以适当的参数列表。

(2)如果父类有无参构造器,则在子类的构造器中用super关键字调用父类构造器不是必须的,如果没有使用super关键字,系统会自动调用父类的无参构造器。

多态Polymorphism 一般分为两种:重载式多态overload和重写式多态override

(1)重载式多态,也叫编译时多态。也就是说这种多态再编译时已经确定好了。我们知道方法名相同而参数列表不同的一组方法就是重载。在调用这种重载的方法时,通过传入不同的参数最后得到不同的结果。

(2)重写式多态,也叫运行时多态。这种多态通过动态绑定(dynamic binding)技术来实现,是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。 重写式多态override 同一个行为具有多个不同表现形式或形态的能力。

多态存在的条件

(1)继承。在多态中必须存在有继承关系的子类和父类。

(2)重写。子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。

(3)向上转型。在多态中需要将子类的引用指向父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。 在子类中重写的方法,可以通过“父类引用指向子类对象”来调用。而子类独有的方法只能通过创建子类对象来调用。  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值