黑马程序员——面向对象(接口和内部类)
2014-10-13 20:02
204 查看
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
一、接口
接口也是一种抽象类,接口是程序的功能的扩展,它降低了耦合性,更重要的是可以用来多实现,就是说一个子类可以实现多个接口。
抽象类是继承,是 "is a "关系。
接口是实现,是 ""like a关系。
抽象类中可以定义非抽象方法,供子类直接使用。
接口的方法都是抽象,接口中的成员都有固定修饰符。
二、内部类
一个类中还可以定义一个类,这个类中类就是内部类。
要实例化一个内普通类之前必须先实例化外部类对象。
静态内部类
一个内部类属于一个外部类的成员,也可以被private static修饰;
如果一个内部类被修饰为private,这个内部类只能在外部类的内部使用;
如果一个内部类被修饰为static,实例化此内部类的时候不需要先实例化外部类;
静态的内部类只能访问静态的外部类成员;
如果一个一个内部类包含了静态成员,那么这个内部类必须是静态的;
局部内部类
/*
局部内部类:
1.在一个方法体内,可以定义一个类,叫:局部内部类;
*/
interface IA
{
void show();
}
class Outside
{
public IA fun(){
final int num = 10;
class Inside implements IA{
public void show(){
System.out.println("B --> show() num = " + num);
}
}
Inside inner = new Inside();
return inner;
//匿名内部类,实现IA接口的子类没有名字
/* IA aObj = new IA(){//相当于定义一个内部类实现IA接口,并且重写接口中的方法,而且同时实例化了一个这个子类对象
public void show(){
System.out.println("B --> show() ");
}
};
return aObj;
*/
/*return new IA(){
public void show(){
System.out.println("B --> show() ");
}
};
*/
}
}
class Demo
{
public static void main(String[] args)
{
//
Outside outer = new Outside();
//
outer.fun();
Outside a = new Outside();
//Object obj = a.fun();
IA obj = a.fun();
obj.show()
}
}
在一个方法体内,可以定义一个类,叫:局部内部类;
局部内部类的不可以为静态类;
内部类定义在局部的时候:
1.不可以被成员修饰符修饰
2.可以直接访问外部类中的成员,因为还持有外部类中的引用
但是不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量。
面向对象可以说基本讲完,但是总感觉自己写代码时就错误百出。可能是自己练得不多吧!不过幸好听的比较认真,所以说压力不大。。。
-----------android培训<
9d4b
/span>、java培训、java学习型技术博客、期待与您交流!------------
一、接口
接口也是一种抽象类,接口是程序的功能的扩展,它降低了耦合性,更重要的是可以用来多实现,就是说一个子类可以实现多个接口。
抽象类是继承,是 "is a "关系。
接口是实现,是 ""like a关系。
抽象类中可以定义非抽象方法,供子类直接使用。
接口的方法都是抽象,接口中的成员都有固定修饰符。
二、内部类
一个类中还可以定义一个类,这个类中类就是内部类。
要实例化一个内普通类之前必须先实例化外部类对象。
内部类定义原则: 当描述事物中,事物的内部还有事物,该事物用内部类来描述。 因为内部事务在使用外部事物中的内容。
静态内部类
一个内部类属于一个外部类的成员,也可以被private static修饰;
如果一个内部类被修饰为private,这个内部类只能在外部类的内部使用;
如果一个内部类被修饰为static,实例化此内部类的时候不需要先实例化外部类;
静态的内部类只能访问静态的外部类成员;
如果一个一个内部类包含了静态成员,那么这个内部类必须是静态的;
局部内部类
/*
局部内部类:
1.在一个方法体内,可以定义一个类,叫:局部内部类;
*/
interface IA
{
void show();
}
class Outside
{
public IA fun(){
final int num = 10;
class Inside implements IA{
public void show(){
System.out.println("B --> show() num = " + num);
}
}
Inside inner = new Inside();
return inner;
//匿名内部类,实现IA接口的子类没有名字
/* IA aObj = new IA(){//相当于定义一个内部类实现IA接口,并且重写接口中的方法,而且同时实例化了一个这个子类对象
public void show(){
System.out.println("B --> show() ");
}
};
return aObj;
*/
/*return new IA(){
public void show(){
System.out.println("B --> show() ");
}
};
*/
}
}
class Demo
{
public static void main(String[] args)
{
//
Outside outer = new Outside();
//
outer.fun();
Outside a = new Outside();
//Object obj = a.fun();
IA obj = a.fun();
obj.show()
}
}
在一个方法体内,可以定义一个类,叫:局部内部类;
局部内部类的不可以为静态类;
内部类定义在局部的时候:
1.不可以被成员修饰符修饰
2.可以直接访问外部类中的成员,因为还持有外部类中的引用
但是不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量。
面向对象可以说基本讲完,但是总感觉自己写代码时就错误百出。可能是自己练得不多吧!不过幸好听的比较认真,所以说压力不大。。。
-----------android培训<
9d4b
/span>、java培训、java学习型技术博客、期待与您交流!------------
相关文章推荐
- 黑马程序员—面向对象(static,封装,继承,多态,内部类,抽象类,接口)总结
- 黑马程序员—Java面向对象(抽象类、模板方法设计模式、接口、多态、内部类)
- 黑马程序员 Java面向对象(继承,抽象类,接口,多态,内部类)
- 黑马程序员_面向对象(2) 接口&抽象类&内部类
- 黑马程序员——面向对象(抽象类、接口、内部类)
- 黑马程序员——【Java基础】——面向对象(一)概述、类与对象、继承、抽象类、接口、多态、内部类
- 黑马程序员——java基础(面向对象)抽象、接口、内部类
- 黑马程序员——java-面向对象二(继承,多态,抽象,接口,包,内部类)
- 黑马程序员——Java基础---面向对象(继承、多态、抽象类、接口、内部类)
- 黑马程序员面试题面向对象二(多态,抽象类abstract,接口Interface,内部类,异常Exception,包package,String类,StringBuffer)
- 黑马程序员——Java基础---面向对象(封装、继承、单例、抽象类、接口、内部类)
- 黑马程序员-Java的面向对象(抽象类、接口、内部类和继承、组合、多态)
- 黑马程序员-面向对象(抽象类、接口与内部类)
- 黑马程序员——Java基础——面向对象(继承、接口、多态)
- 黑马程序员-JAVASE入门(接口、内部类、多态)
- 黑马程序员——面向对象(二)---类的继承、多态性、匿名内部类、异常、包、访问控制、命名规范、jar文件
- 黑马程序员——java第七天:面向对象(继承、子父类之变量、final、抽象、模板方法、接口)
- 黑马程序员——继承、多态、内部类和接口
- 黑马程序员_day07 面向对象(继承,抽象类,接口)
- 黑马程序员——面向对象——包-修饰符-内部类