java类里面还有什么?java类包含哪些内容
这篇文章给大家聊聊关于java类里面还有什么,以及java类包含哪些内容对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
java中,在一个类中在写一个类有什么用处啊有那些好处呢
那个叫内部类
定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明为abstract的供其他内部类或外部类继承与扩展,或者声明为static、final的,也可以实现特定的接口。static的内部类行为上象一个独立的类,非static在行为上类似类的属性或方法且禁止声明static的方法。内部类可以访问外部类的所有方法与属性,但static的内部类只能访问外部类的静态属性与方法。
外部类按常规的类访问方式使用内部类,唯一的差别是外部类可以访问内部类的所有方法与属性,包括私有方法与属性。如:
pinner p= new pinner();
p.index= 20;
p.Print();
----这种方式适合外部类的非static方法;
pouter po= new pouter();
pinner pi= po.new pinner();
pi.index= 40;
pi.Print();
----这种方式适合外部类的static方法;
内部类类似外部类的属性,因此访问内部类对象时总是需要一个创建好的外部类对象。内部类对象通过‘外部类名.this.xxx’的形式访问外部类的属性与方法。如:
System.out.println("Print in inner Outer.index="+ pouter.this.index);
System.out.println("Print in inner Inner.index="+ this.index);
如果需要在其他类中访问内部类,可以使用:
(1)外部类提供创建内部类的方法供其他类使用。如:
//外部类
pinner getInner()
{
return new pinner();
}
//其他类
pouter.pinner pi= po.getInner();
pi.Print();
(2)直接创建内部类的对象。如:
pouter po= new pouter();
pouter.pinner pi= po.new pinner();
pi.Print();
内部类可以声明在外部类的方法中或语句块中。如果内部类需要访问包含它的外部类方法或语句块的局部变量或参数,则该局部变量或参数必须是final的。外部类的其他方法、其他类无法访问声明在方法内部或块内部的内部类。
如果一个类继承内部类,则创建该类的对象时需提供一个外部类的对象作为构造方法的参数。如:
class Car
{
class Wheel
{
}
}
class SuperWheel extends Car.Wheel
{
SuperWheel(Car car)
{
car.super();
}
public static void main(String [] args)
{
Car car= new Car();
SuperWheel wl= new SuperWheel(car);
}
}
如果创建命名的内部类没有多少实际意义时,可以创建匿名的内部类。比如使用内部类实现接口的功能(如事件处理器、适配器等),而功能的差异较大,需要根据实际的情况创建相应的内部类时,可以使用匿名内部类。简单的示例如下:
interface WebView
{
void doGet();
}
class A
{
WebView ShowName()
{
return new WebView()
{
void doGet()
{
System.out.println("Name");
}
};
}
WebView ShowCode()
{
return new WebView()
{
void doGet()
{
System.out.println("Code");
}
};
}
}
最后,JAVA内部类还有一个作用,那就是实现JAVA的多继承。JAVA本身是不允许多继承的,如果我们想一个类继承多个基类,就可以使用内部类。通过内部类分别继承一个基类,外部类创建内部类的对象,并使用内部类的方法,变相地实现了多继承。
java类的成员有哪些
在一个类的内部,一般包括以下几类成员:成员变量、构造方法、普通方法和内部类等。使用反射机制可以在无法查看源代码的情况下查看类的成员。编写程序,使用反射机制查看ArrayList类中定义的成员变量、构造方法和普通方法。
思路分析:这个ArrayList类不是自己定义的,就是Java里面的java.util.ArrayList类。
代码如下:
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ClassViewer{
public static void main(String[] args) throws ClassNotFoundException{
Class<?> clazz= Class.forName("java.util.ArrayList");
System.out.println("类的标准名称:"+ clazz.getCanonicalName());
Constructor<?>[] constructors= clazz.getConstructors();//获得该类对象的所有构造方法
System.out.println("类的构造方法:");
if(constructors.length!= 0){
for(Constructor<?> constructor: constructors){
System.out.println("\t"+ constructor);//输出构造方法
}
} else{
System.out.println("\t空");
}
Field[] fields= clazz.getDeclaredFields();//获得该类对象的所有非继承域
System.out.println("类的非继承域变量:");
if(fields.length!= 0){
for(Field field: fields){
System.out.println("\t"+ field);//输出非继承域
}
} else{
System.out.println("\t空");
}
Method[] methods= clazz.getDeclaredMethods();//获得该类对象的所有非继承方法
System.out.println("类的非继承方法:");
if(methods.length!= 0){
for(Method method: methods){
System.out.println(method);//输出非继承方法
}
} else{
System.out.println("\t空");
}
}
}
java类包含哪些内容
Java中的类由主要由两部分内容组成:
字段(又称变量):说明属性、特征,设计时要考虑字段名、数据类型、访问权限等方面,还可以设置初始值。出于保护数据的需要,多声明为private权限;
方法(也称函数):说明行为、功能,设计时要包含方法名、参数、返回值的数据类型、访问权限等内容,方法名后的圆括号不能省略
java类的里面可以再定义一个类吗
java类里面还可以定义一个类,即内部类。
java内部类分为:成员内部类、静态嵌套类、方法内部类、匿名内部类。
内部类的共性
(1)、内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号。
(2)、内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。
(3)、内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量。
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!