抽象类_接口_内部类JAVA048-051
来源:互联网 发布:网络修真小说排行榜 编辑:程序博客网 时间:2024/06/10 17:03
来源:http://www.bjsxt.com/
1、S01E048_01抽象(abstract)类和抽象方法
抽象方法的意义:将方法的设计和方法的实现分离
2、S01E049_01接口(interface)详解
(1)接口中只有:常量和抽象方法;
(2)常量定义时public static final写或不写都可以;
(3)方法声明时public abstract写或不写都可以;
(4)类可以实现多个接口(类继承只能单继承);
(5)子类通过implements来实现接口中的规范;
(6)接口不能创建实例,但是可用于声明引用变量类型;
(7)一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的;
(8)接口支持多继承(extends 父接口1,父接口2…)
3、S01E051_01内部类详解
内部类的作用:
(1)内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其它类直接访问。
(2)内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员。但外部类不能访问内部类的内部属性。
内部类的分类:
(1)成员内部类(可以使用private、protected、public任意进行修饰。类文件:外部类$内部类.class)
a)非静态内部类(外部类里使用非静态内部类和平时使用其它类没什么不同)
[1]非静态内部类必须寄存在一个外部类对象里。因此,如果有一个非静态内部类对象,那么一定存在对应的外部类对象。非静态内部类对象单独属于外部类的某个对象。
[2]非静态内部类可以使用外部类的成员,但是外部类不能直接访问非静态内部类成员。
[3]非静态内部类不能有静态方法、静态属性、静态初始化块。
[4]静态成员不能访问非静态成员:外部类的静态方法、静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义变量、创建实例。
[5]成员变量访问要点:
1、内部类里方法的局部变量:变量名
2、内部类属性:this.变量名
3、外部类属性:外部类名.this.变量名
[6]内部类的访问:
1、外部类中定义内部类:new InnerClass()
2、外部类以外的地方使用非静态内部类
public class Outer{ public static void main(String[] args){ Face f = new Face(); Face.Nose n = f.new Nose();//Nose n = f.new Nose(); n.breath(); }}class Face{ int type String shape = "瓜子脸" class Nose{ void breath(){ System.out.println(shape); System.out.println(Face.this.type); System.out.println("呼吸"); } }}
b)静态内部类
[1]定义方式:
static class ClassName{
//类体
}
[2]使用要点:
1、当一个静态内部类对象存在,并不一定存在对应的外部类对象。因此,静态内部类的实例方法不能直接访问外部类的实例方法。
2、静态内部类看做外部类的一个静态成员。因此,外部类的方法中可以通过:静态内部类.名字 访问静态内部类的静态成员。通过 new静态内部类() 访问静态内部类的实例。
3、在外部类的外面创建静态内部类:
Face.TestStaticInner aInner = new Face.TestStaticInner();
public class Outer{ public static void main(String[] args){ Face.Ear e = new Face.Ear(); e.listen(); }}class Face{ int type String shape = "瓜子脸" Static String color = "红润" static class Ear{ void listen(){ System.out.println("我在听!"); System.out.println(color);//静态内部类可以访问外部类的静态成员 } }}
(2)匿名内部类
适合那种只需要使用一次的类。比如:键盘监听操作等等。语法:
new 父类构造器(实参列表)实现接口(){
//匿名内部类类体
}
this.addWindowListener(new WindowAdapter(){ @Override public void windowClosing(WindowEvent e){ System.exit(0); }});this.addKeyListener(new KeyAdapter() @Override public void keyPressed(KeyEvent e){ myTank.keyPressed(e); } @Override public void keyReleased(KeyEvent e){ myTank.keyReleased(e); }});
(3)局部内部类
定义在方法内部。作用域只限于本方法。用得非常少。
- 抽象类_接口_内部类JAVA048-051
- Java学习_抽象类、接口、内部类_2014_1_16
- 黑马程序员_面向对象2_(继承、多态、抽象类abstract、接口interface、内部类)
- 黑马程序员_面向对象(2) 接口&抽象类&内部类
- 黑马程序员_面向对象二(继承,多态,抽象类abstract,接口Interface,内部类)
- 黑马程序员_Java基础_抽象类,模板设计模式,接口,内部类,多态
- 抽象类_接口
- 接口、抽象类、内部类
- 抽象类,接口,内部类
- 接口、抽象类、内部类
- 抽象类、接口、内部类
- 接口,抽象类,内部类
- 黑马程序员_接口和内部类
- 多态_object类_内部类_匿名内部类
- 抽象、接口、内部类
- 笔试_接口抽象类
- C++ _内部类
- 0009_内部类
- linux下免秘钥登录
- HTTP协议和HTTPS协议详解
- 数据结构例程——从根节点到每个叶子节点的路径之逆
- libsvm中的dec_values以及分类结果评分问题
- Troubleshooting ‘DFS lock handle’ waits
- 抽象类_接口_内部类JAVA048-051
- Android4.x 如何处理Power按键
- 浅说机器学习中“迭代法”
- 2015长春现场赛感想
- android SQLite存储简单范例+详细注释(增删查改)
- mongodb3.x认证
- UVA 题目11584 - Partitioning by Palindromes(DP)
- 深刻理解Linux进程间通信(IPC)
- Callable与Future的介绍