java_修饰符、内部类
2018-01-03 09:11
134 查看
package com.tz.demo01; /** * 修饰符: 本类 同包下子类 同包下类 不同包下子类 不同包下类 * public: 公共的 1 1 1 1 1 * protected : 受保护的 1 1 1 1 0 * default : 默认的 1 1 1 0 0 * private : 私有的 1 0 0 0 0 * * 修饰符的使用: * 类的修饰符: public final abstract 默认(什么都不写) * 构造方法/函数: public protected private * 成员变量: public protected private static final * 局部变量: final * 方法: public protected private static final abstract * * @author Administrator * */ public class Animal { public String name1; protected String name2; String name3; private String name4; public void show(){ System.out.println(name1); System.out.println(name2); System.out.println(name3); System.out.println(name4); } }
package com.tz.demo01; /** * 同包下子类 * @author Administrator * */ public class Dog extends Animal{ public void show1(){ System.out.println(name1); System.out.println(name2); System.out.println(name3); //System.out.println(name4); 私有的不能使用 } }
package com.tz.demo01; /** * 同包下类: * * @author Administrator * */ public class Aaaa { public static void main(String[] args) { //没有继承关系的类在使用时,通过创建对象使用其属性和方法,使用的方式 对象名.属性名/方法名 Animal animal = new Animal(); System.out.println(animal.name1); System.out.println(animal.name2); System.out.println(animal.name3); //System.out.println(animal.name4); } }
package com.tz.demo02; import com.tz.demo01.Animal; /** * 不同包下子类: * * @author Administrator * */ public class Fish extends Animal{ public void show2(){ System.out.println(name1); System.out.println(name2); //System.out.println(name3); 默认/缺省:不能使用(报错) //System.out.println(name4); 私有:不能使用(报错) } }
package com.tz.demo02; import com.tz.demo01.Animal; /** * 不同包下类: * * @author Administrator * */ public class Aaaa { public static void main(String[] args) { //创建对象 Animal animal = new Animal(); System.out.println(animal.name1); //System.out.println(animal.name2); //System.out.println(animal.name3); //System.out.println(animal.name4); } }
package InnerClass; /** * java中的内部类: * 在一个类中定义另一个类叫作内部类,是一个独立的类,在编译时内部类会被编译成独立的.class文件 * 文件名前冠以外部类的类名和$符 * 例: * 在A类中定义一个B类 : --》 A$B.class * * 内部类是外部类的一个成员,因此内部类可以自由访问外部类的成员,包括私有成员 * * 内部类的分类: * 1、成员内部类 --》成员变量 * 2、局部内部类 --》局部变量 * 3、静态内部类 --》静态变量 * 4、匿名内部类 * * @author Administrator * */ public class Test { //主方法 public static void main(String[] args) { //创建对象 MemberInner mbi = new MemberInner(); System.out.println(mbi.str2); mbi.new Inner(); //以new的方式创建内部类 //成员内部类的创建 MemberInner.Inner inner = new MemberInner().new Inner(); //局部内部类 PartInner pi = new PartInner(); pi.method(); //静态内部类 StaticInner.InnerClass staicinner = new StaticInner.InnerClass(); } }
package InnerClass; /** * 成员内部类: * 1、成员内部类可以看做成员变量 * 位置: 外部类 类中,方法体外 * 2、可以用控制访问权限的修饰符修饰 * 3、成员内部类不能拥有静态声明 * 4、成员内部类可以访问外部类中的所有数据 * 5、成员内部类如何创建对象: * 外部类 外部类名对象 = new 外部类(); * 外部类名对象 . new 内部类名(); * 外部类类名.内部类类名 内部类对象名 = new 外部类类名().new 内部类类名(); * @author Administrator * */ public class MemberInner {//外部类 //静态变量 static String str1 = "zxg"; //成员变量 String str2 = "qw"; //静态方法 private static void phoebe(){} //成员方法 public void daming(){} class Inner{ //成员内部类 //静态变量 //static String str1 = "zxg"; //静态方法 //private static void phoebe(){} //成员变量 String str2 = "qw"; //成员方法 public void daming(){ System.out.println(str1); phoebe(); System.out.println(str2); daming(); } } }
package InnerClass; /** * 局部内部类: * 1、局部内部类可以看做是局部变量 * 2、局部内部类不可以用控制访问权限修饰符修饰 * 3、局部内部类不能有静态声明(因为他是一个局部变量的等级) * 4、局部内部类访问局部变量时,局部变量之前默认加final * * @author Administrator * */ public class PartInner { int a = 3; //成员变量 public void method(){ class Inner { int i = 1; //局部变量 public void m1(){ System.out.println(a); System.out.println(i); } } Inner inn = new Inner(); inn.m1(); } }
package InnerClass; /** * 静态内部类 * 1、静态内部类可以看做是静态变量 * 2、可以被控制权限修饰符修饰 * 3、可以有静态声明和非静态声明 * 4、可以直接访问外部类中静态数据,但是不能直接访问成员数据 * @author Administrator * */ public class StaticInner { //静态变量 static String str1 = "zxg"; //成员变量 public String str2 = "qw"; //静态方法 private static void phoebe(){} //成员方法 public void daming(){} public static class InnerClass{ //静态内部类 //静态变量 //static String str1 = "zxg"; //成员变量 //String str2 = "qw"; //静态方法 private static void phoebe(){} //成员方法 public void daming(){ System.out.println(str1); //System.out.println(str2); phoebe(); daming(); } } }
package InnerClass; /** * 匿名内部类 * 1、没有类名 * 2、好处:少定义一个类 * 3、缺点:无法重复利用 * @author Administrator * */ public class AnonInner { public static void test(Cust cust){ cust.logout(); } public static void main(String[] args) { //创建对象 //Phoebe phoebe = new Phoebe(); //test(phoebe); test(new Cust() { @Override public void logout() { System.out.println("成功退出。。。。"); } }); } } interface Cust{ //引用数据类型 String //退出登录 void logout(); //抽象方法(接口里的方法是抽象方法) } /*class Phoebe implements Cust{ @Override public void logout() { System.out.println("我已经成功退出......"); } }*/
相关文章推荐
- 重踏学习Java路上_Day10(形参与返回值,包,修饰符,内部类)
- JAVA基础初探(四)JAVA封装、包的概念及使用、访问修饰符、this关键字、内部类(成员,静态,方法,匿名)
- JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配
- java基础之修饰符和内部类
- JAVA基础复习十-权限修饰符、匿名内部类
- Java基础-10总结形式参数,包,修饰符,内部类
- Java基础:Day11笔记内容 (内部类、权限修饰符 )
- Java基础(八) Java修饰符及接口详解之(二) 内部类
- java基础之修饰符和内部类
- Java基础学习笔记10——(形参和返回值,包,导包,权限修饰符,常见修饰符,内部类)
- Java(1)——修饰符和内部类
- java中内部类 、object类 、final关键字、修饰符、多态
- 黑马程序员_Java(形式参数,包,内部类,权限修饰符)
- Java基础-10总结形式参数,包,修饰符,内部类
- java入门9-形式参数,导包,修饰符,内部类
- static、final修饰符、内部类及Java的内存分配
- JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配
- JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配
- static、final修饰符、内部类和Java内存分配
- JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配