Java学习第十一章 之 final、static、内部类

  1 /*
  2 
  3 final修饰的类,变量,方法有什么特点
  4 
  5        被final修饰的类不能被继承,可以继承其他类
  6 
  7        被final修饰的变量不能更改,可以在创建对象前赋值,创建对象前调用构造方法,为变量赋值
  8 
  9        被final修饰的引用类型变量,地址值不能更改,地址中的属性可以改变
 10 
 11        被final修饰的方法,不能被子类重写
 12 
 13        
 14 
 15 */
 16 
 17 //定义一个被final修饰的类
 18 
 19 public final class Final{
 20 
 21     final int a = 1;
 22 
 23     final int b;
 24 
 25    public Final(){
 26 
 27       b = 2;
 28 
 29  
 30 
 31    public final void work(){}
 32 
 33    }
 34 
 35 
 36 
 37   public static void main(String[] args){
 38 
 39       Final f = new Final();
 40 
 41      f.name = "张三";
 42 
 43   }
 44 
 45 }
 46 
 47 
 48 
 49 /*
 50 
 51 static:静态修饰符
 52 
 53            多个对象在访问或修改static修饰的成员变量时,其中一个对象改变了成员变量的值,其他对象的成员变量的值跟着改变,即多个对象共享同一个static修饰的成员变量
 54 
 55            被static修饰的成员可以直接用类名调用,类名.静态成员变量      类名.静态成员方法(参数)
 56 
 57            同一类中,静态成员只能访问静态成员
 58 
 59            静态优先于非静态
 60 
 61            定义静态常量,通常使用public static final 数据类型  变量名 = 值
 62 
 63 */
 64 
 65 public class Static{
 66 
 67    public staitc int num = 10;
 68 
 69    public static void main(String[] args){
 70 
 71         Static s = new Static();
 72 
 73         Static s2 = new Static();
 74 
 75         s.num = 111;
 76 
 77         System.out.println(s.num + " " + s2.num);  
 78 
 79   }
 80 
 81 }
 82 
 83 publi class Demo{
 84 
 85 
 86 
 87     public int i = 2;
 88 
 89     public static int a = 1;
 90 
 91     public static final String NAME = "李四";
 92 
 93     public  static void method(){
 94 
 95       System.out.println("静态方法");
 96 
 97     }
 98 
 99 public  static void main(String[] args){
100 
101        System.out.println(i);
102 
103        System.out.println(Demo.a);
104 
105        System.out.println(Demo.NAME);
106 
107        Demo.method();       
108 
109 }
110 
111 }
112 
113 
114 
115 /*
116 
117 匿名对象
118 
119 */
120 
121 public class Animal{
122 
123        public Animal eat(){
124 
125               return new Animal; //匿名对象可以作为返回值
126            }
127 
128 
129           public static void method(Person p){
130 
131                 
132 
133             }
134 
135     public static void main(String[] args){
136 
137                 Animal a = new Animal();//普通对象
138 
139                 new Animal();//匿名对象
140 
141                 Animal.method(new Person());//匿名对象可以作为方法参数
142 
143      }
144 
145 }
146 
147 /*
148 
149 内部类:成员内部类、局部内部类、匿名内部类
150 
151 */
152 
153 //成员内部类
154 
155 public class Person{
156 
157     class Heart{
158 
159       public void jump(){
160 
161          System.out.println("跳动");
162 
163         }
164 
165     }
166 
167   public static void main(String[] args){
168 
169        Person.Heart p = new Person().new Heart();
170 
171         p.jump();
172 
173     }
174 
175 }
176 
177 //局部内部类
178 
179 public class Animal{
180 
181      public void eat(){
182 
183           System.out.println("吃");
184 
185            class Cat{
186 
187             public void run(){
188 
189                System.out.println("跑");
190 
191              }
192 
193          }
194 
195        new Cat().run();//创建内部类对象,调用run方法
196 
197     }
198 
199    public static void main(String[] args){
200 
201       Animal a = new Animal();//创建外部类对象
202 
203       a.eat(); //调用外部类方法
204 
205    }
206 }
207 
208 /*匿名内部类
209 
210   创建接口
211 
212 */
213 
214 public interface Person{
215 
216      public  void eat();
217 
218      public void run();
219 
220 }
221 
222 public class TestPerson implements Person{
223 
224    public static void main(String[] args){
225 
226               Person p = new Person(){
227 
228                   public void eat(){
229 
230                    System.out.println("吃饭");
231 
232                  }
233 
234                  public void run(){
235 
236                    System.out.println("跑步");
237 
238                   }
239 
240              };
241 
242             p.eat();
243 
244             p.run();
245 
246    }
247 
248 }
249 
250 
251 
252 /*
253 
254   代码块:静态代码块只执行一次
255 
256 */
257 
258 public class Animal{
259 
260      String name;
261 
262      {
263 
264       System.out.println("构造代码块");
265 
266      }
267 
268      public Animal(){
269 
270          super();
271 
272          System.out.println("无参构造代码块");
273 
274      }
275 
276      public Animal(String name){
277 
278               this.name = name;
279 
280      }
281 
282     static{
283 
284         System.out.println("静态代码块");
285 
286      }
287 
288      public static void main(String[] args){
289 
290               Animal a = new Animal();
291 
292               Animal a2 = new Animal("张三");
293 
294               System.out.println("普通代码块");
295 
296      }
297 
298 }

 

posted @ 2020-04-02 10:54  蜡笔辛巴  阅读(196)  评论(0编辑  收藏  举报