黑马程序员_JAVA面向对象的三大特点

训、Java培训、.Net培训、Java学习型技术博客、期待与您交流-----------
面向对象的三大基本特征就是:封装、继承、多态。

      一、封装: 
      是指隐藏对象的属性和实现细节,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏,仅提供公共访问方式。比如说这个类:
      class People{

          private String name; //属性一:姓名
          public String getName(){    
               return name;
          }
          private void setName(String name){
               name=name;
          }
      }
      从上面这个例子可以看到:人的姓名是私有的,是访问不到的。但是他会对外提供方法,来让我们知道,就有了setName()方法,一般类里面只要有私有属性,那么就它会对应的get和set方法,我们就可以通过 setName()方法就可以知道人的姓名了,我们只知道人的姓名,不知道姓名是怎么来的,那么人的姓名就可以说是被封装起来了。

      二、继承:
      面向对象编程(OOP)语言的一个主要功能就是“继承”。继承就是可以使用现有类的所有功能并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”。被继承的类称为“基类”、“父类”。继承的过程,就是从一般到特殊的过程。继承可以通过“Inheritance”和“Composition”来实现,一个子类可以继承多个基类,一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。
//建一个A类
class A{
int num=0;                   //成员变量 其中num是实参
public A(int i){      //成员方法,其中 i 是型参
//输入int型文件输出下面
System.out.println("aaaaaaaaaa");
System.out.println("i= "+i);
num=i;             //把输入的i赋值给成员变量num
}
}
class B extends A{      //B继承A
int num=0;
public B(){                  //成员方法B.
//继承类A的方法.因为B继承了A必然继承了A的特性.所以输入int值10令方法实现.
super(10);
System.out.println("bbbbbbbbbb");
System.out.println("num= "+num);       //这里的num是类B的.
//如果想显示类A的num则需要用下列的super.num.这里注意num在类A中需是成员变量才可以.
System.out.println("super.num= "+super.num);
}
}
public class C{      //建立测试类C
public static void main(String aa[]){
new B();
}
}
      
          
      三、多态:
      多态性(polymorphisn)是允许你将父对象设置成为和一个或者多个和它子类相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作,就是说允许将子类类型的指针赋值给父类类型的指针。实现多态有两种方式:覆盖(是指子类重新定义父类的方法)、重载(允许多个同名函数,而这些函数的参数个数、类型都不同)。
      interface DoSomething{   //定义一个接口实现两个功能
           public void eat();
           public void dosome();
      }
      class Animal            //定义一个动物类
           public void animalSome(Dosomething ds){    
               if(ds!=null){
                  ds.eat();
                  ds.dosome();
               }       
           }
   class Cat implements DoSomething{
       public void eat(){
          System.out.println("Cat eat fish");
       }
       public void dosome(){
           System.out.println("Cat HouseMouse")
        }    
   }
   class Pig implements DoSomething{
        public void eat()
        {
             System.out.println("Pig eta feed");
         }
         public void dosome(){
              System.out.println("Pig sleep");
          }
   }
   class Test{
          public static void main(String[] args){
                Animal a=new Animal();
                a.animalSome(new Cat());
                a.animalSome(new Pig());
           }
   }
 通过上面的代码体现:父类的引用指向了自己的子类对象,父类的引用也可以接收自己的子类对象,多态的出现大大的提高程序的扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值