黑马程序员————面向对象多态,内部类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黑马程序员————面向对象多态,内部类相关的知识,希望对你有一定的参考价值。
------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(); } }
以上是关于黑马程序员————面向对象多态,内部类的主要内容,如果未能解决你的问题,请参考以下文章