码迷,mamicode.com
首页 > 其他好文 > 详细

【黑马】程序员————面向对象(一)多态,内部类

时间:2016-03-07 19:11:19      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!-----

一、多态

多态概述

一句话,父类引用指向子类对象。Person p = new Student();事物存在的多种形态

类与类之间要么实现,要么继承

 

多态的特点

提高了程序的可扩展性和后期可以维护性。

父类型的引用在使用功能时,不能直接调用子类中的特有方法。

类型提升  Student s = (Student)p

多态 Person p = new Student();

如果子类父类中含有同名变量和同名函数:

函数:编译看左边,运行看右边。

同名变量:都看左边

多态的应用举例

 

package com.fanfantest;



/*多态示例延时
 * 
 * 
 */
public class Test1 {
    
    
    public static void main(String[] args) {
    
        PetShop ps = new PetShop();
        ps.askFood(new Cat());
        ps.askFood(new Dog());
    }
}


interface Eat {      //接口Eat,封装了eat方法,用来表示不同动物喜欢吃的事物
    
    public  abstract void eat () ;
        
    
}

class Cat implements Eat {   //猫类实现了接口,重写了方法
    
    public void eat() {
        
        System.out.println("the fish is great");
    }
}

class Dog implements Eat {
    
    public void eat() {
        System.out.println("the bones is good");
    }
}

class PetShop {     //宠物商店,内涵方法询问食物
    
    public void askFood(Eat a) {
        
        a.eat();
    }
    
}

 

 

 

二、内部类

内部类概述

内部类就是将一个类作为成员定义在了另一个类中。如集合类中,都有一个类实现了Iterator接口,用于操作该集合内部的元素。集合对象.iterator();返回这样的一个内部类。

内部类特点

访问规则:

1、内部类可以直接访问外部类中的成员,包括私有。

之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式:  外部类名.this。

2、外部类要访问内部类,必须建立内部类对象。

Outer.Inner in =new Outer().new Inner();

局部内部类和成员内部类

局部内部类定义在外部类的某个方法中,内部类不可以访问它所在的局部中非最终变量。只能访问被final修饰的局部变量。

内部类程序举例

匿名内部类

匿名内部类可以理解为一个内部类的对象,且这个对象必须继承一个类或实现一个接口。

多线程中有所体现

  new Thread(new atrun() {

    public void run() {

      .........

     }

  }).start();

 练习,补全代码

interface Inter  { 
    
    void method();  
}  
  
class Test  { 
 
    //补足代码,通过匿名内部类  
    static Inter function()   { 
       
        return new Inter()      {  
    
            public void method()           { 
    
                System.out.println("内部类练习");  
            }  
        };  
    }  
}  
  
class InnerClassDemo   {  

    public static void main(String[] args)   {
    
        Test.function().method();  
    }  
}  

 

 

【黑马】程序员————面向对象(一)多态,内部类

标签:

原文地址:http://www.cnblogs.com/fanjianan/p/5251353.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!