JAVA基础知识补习


今天听了曹雪松老师讲课,才发现几年前接触过的东西还是很有意思的,同时也感觉到自己以前的学习总是死记硬背不会融会贯通,也停留在皮毛表面,因此总是原地踏步,没有掌握到一些语言的精髓以及一些技术背后的原理.同时感觉到编程的基础是对一门语言语法特性的扎实掌握,还有计算机相关的主干课程的牢固掌握,才能够举一反三,学会设计。
有感于此,决心补一补Java的基础知识,以此为基础结合老师的视频课程好好理解一下Java Web相关的东西,为之后的工作打下一个基础。


内部类

//错误1:无法从静态上下文中引用非静态 变量 this
import java.lang.*;
class test{  
    public static void main(String[] args){
    System.out.println("hello world!");
    User user=new User("joe");
    user.run(); 
 }
 class User{ 
    private String name;
    public User(String aname){
     name=aname;
    }
    public int run(){
     System.out.println(this.name+" run!");
    }
 }  
}

此段代码中user位于test类的内部,是属于test的非静态内部类,也是一个成员,因此无法直接在静态方法main中直接访问非静态的成员变量,所以不能生成。
纠正:
方法1 先生成这个test类的对象,就可以用内部类的生成方法new出来,结果就会显示consructor: joe

public class test {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        test t=new test();
        User u=t.new User("joe");
        System.out.println("hello world");
}
    class User{
        String name;
        User(String a){
          this.name=a;
          System.out.println("consructor: "+name);
        }
        void run(){
            System.out.println(name+" run!");
        }
    }
}

方法2:直接将此类变为静态的内部成员类,这样的话就可以直接调用了,让我们来试一下

public class test1 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //test1 t=new test1();
        //对于静态内部类,可以直接用new 对象的方法,不依赖于外部类就可以实例化
        User u=new User("joe");
        System.out.println("hello world");
}
    static class User{
        String name;
        User(String a){
          this.name=a;
          System.out.println("consructor: "+name);
        }
        void run(){
            System.out.println(name+" run!");
        }
    }
}

输出结果:
constructor: joe

参考1:内部类的不同种类的用法
http://blog.csdn.net/fgakjfd/article/details/5282646

参考2:解析静态内部类的使用目的与限制
http://blog.csdn.net/vange/article/details/5407625

主要有:
1静态内部类的实例化不依赖于外部内的实例化,可以升级为顶级类
2非静态内部类,即成员内部类内部不能有静态成员变量。否则编译有问题
3对于那些非静态的成员变量与成员方法,在静态内部类中是无法访问的。这就是静态内部类的最大使用限制

拓展:设计模式:单例模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值