day10(修饰符,内部类)
来源:互联网 发布:优化教育结构 编辑:程序博客网 时间:2024/05/29 18:47
一.四种权限修饰符
二.类及其组成所使用的常见修饰符
1.修饰符:
- 权限修饰符:private,默认的,protected,public
- 状态修饰符:static,final
- 抽象修饰符:abstract
2.类:
- 权限修饰符:默认修饰符,public
- 状态修饰符:final
抽象修饰符:abstract
用的最多的就是:public
3.成员变量:
- 权限修饰符:private,默认的,protected,public
状态修饰符:static,final
用的最多的就是:private
4.构造方法:
权限修饰符:private,默认的,protected,public
用的最多的就是:public
5.成员方法:
- 权限修饰符:private,默认的,protected,public
- 状态修饰符:static,final
- 抽象修饰符:abstract
6.组合规则:
成员变量:public static final
成员方法:
public static
public abstract
public final
三.内部类(主要应付面试)
内部类有四种:成员内部类、局部内部类、匿名内部类和静态内部类
1.内部类访问特点
- a:内部类可以直接访问外部类的成员,包括私有。
b:外部类要访问内部类的成员,必须创建对象。
外部类名.内部类名 对象名 = 外部类对象.内部类对象;
public class Circle { private double radius; public Circle(double radius) { this.radius = radius; } class Draw { //内部类 public void drawSahpe() { System.out.println("半径为:"+radius); System.out.println("drawshape"); } } public static void main(String[] args) { Circle.Draw draw = new Circle(4).new Draw(); draw.drawSahpe(); }}
2.成员内部类
a.看成外部类的一个成员
b.访问同名的成员变量或者方法时:
- 外部类.this.成员变量
- 外部类.this.成员方法
3.成员内部类私有使用
4.成员内部类的面试题
要求:使用已知的变量,在控制台输出30,20,10。
class Outer { public int num = 10; class Inner { public int num = 20; public void show() { int num = 30; System.out.println(num); System.out.println(this.num); System.out.println(Outer.this.num); } }}public class Ti11 { public static void main(String[] args) { Outer.Inner oi = new Outer().new Inner(); oi.show(); } }
5.局部内部类访问局部变量的问题
a.局部内部类访问局部变量必须用final修饰
b.局部内部类在访问他所在方法中的局部变量必须用final修饰,为什么?
因为当调用这个方法时,局部变量如果没有用final修饰,他的生命周期和方法的生命周期是一样的,当方法弹栈,这个局部变量也会消失,那么如果局部内部类对象还没有马上消失想用这个局部变量,就没有了,如果用final修饰会在类加载的时候进入常量池,即使方法弹栈,常量池的常量还在,也可以继续使用
但是jdk1.8取消了这个事情,所以我认为这是个bug
c.局部内部类就像是方法里面的一个局部变量一样,是不能有public、protected、private以及static修饰符的。
public class Local { public static void main(String[] args) { print(); } public static void print(){ final int b = 4; class Car{ int a = 5; public void out(){ System.out.println(a+" "+b); } } Car car = new Car(); car.out(); }}
6.匿名内部类的格式和理解
a.匿名内部类在开发中的应用
public class Ti15 { public static void main(String[] args) { PersonDemo pd = new PersonDemo(); pd.method(new Person(){ public void show(){ System.out.println("匿名内部类"); } }); }}abstract class Person{ public abstract void show();}class PersonDemo{ public void method(Person p){ p.show(); }}
b.匿名内部类的面试题
interface Inter { void show(); } class Outer { //补齐代码 } class OuterDemo { public static void main(String[] args) { Outer.method().show(); } }
要求在控制台输出”HelloWorld”
public class Ti16 { public static void main(String[] args) { Out.method().show(); }}interface Inter { void show(); }class Out { //匿名成员内部类 /*public static Inter method(){ return new Inter() { @Override public void show() { // TODO Auto-generated method stub System.out.println("a"); } }; }*/ //成员内部类 /*class InterImp implements Inter{ @Override public void show() { // TODO Auto-generated method stub System.out.println("成员内部类"); } } public static Inter method(){ InterImp imp = new Out().new InterImp(); return imp; }*/ /*static class InterImp implements Inter{ @Override public void show() { // TODO Auto-generated method stub System.out.println("静态成员内部类"); } } public static Inter method(){ InterImp imp = new Out.InterImp(); return imp; }*/ //局部内部类 public static Inter method(){ class InterImpl implements Inter{ public void show(){System.out.println("局部内部类");}; } return new InterImpl(); }}
阅读全文
0 0
- day10(修饰符,内部类)
- day10(匿名)内部类
- Day04 修饰符&内部类
- 修饰符,包,内部类
- java笔记--day10--内部类
- Day10 --包 匿名内部类
- 面向对象 (内部类)+JAVA学习笔记-DAY10
- Java学习笔记(七)--权限修饰符 内部类
- 包,修饰符,内部类,匿名内部类
- java内部类及修饰符
- static、final修饰符、内部类
- static、final修饰符、内部类
- static、final修饰符、内部类
- 内部类和静态修饰符static
- Java封装(修饰符+包+内部类)
- 面对对象-权限修饰符、内部类
- java内部类的修饰符
- 内部类与接口修饰符
- context.Database.SqlQuery<>()查询
- oracle导入导出dmp文件
- 网络群聊系统
- 【13】PMP一模20170723质量7种工具总结
- 内存对齐
- day10(修饰符,内部类)
- c++类的特性之继承
- http://blog.csdn.net/sidely/article/details/49818911
- 深度剖析JDK动态代理机制
- Struts2--获取ServletAPI的方式
- lua拆分字符串not enough memory
- Spark源码之reduceByKey与GroupByKey
- 滑雪 (dp)动态规划
- No 'Access-Control-Allow-Origin' 解决办法