匿名对象
- 匿名对象是指创建对象,只有创建对象的语句,却没有把对象地址值赋值给某个变量。
创建一个普通对象:
Person p=new person( );
创建一个匿名对象:
new Person();
匿名对象的特点:
- 创建匿名对象直接使用,没有变量名。
- 匿名对象在没有指定其引用变量时,只能使用一次。
- 有名字对象,引用类型变量,可以反复使用
- 匿名对象,没有引用变量,只能用一次
- 匿名对象可以当参数传递
public class Person{
public void eat( ){
System .out.println("人在吃饭");
}
}
public class Test{
public static void main( String [ ] args){
Person p=new Person ( );
p.eat ( );
new Person ( ).eat( );
}
}
内部类
- 在一个类的内部,又定义了其他类
1.内部类,可以使用外部类成员,包括私有。
public class Outer{
private int a = 1;
class Inner{
publivc void inner( ){
System.out.println("内部类方法inner" +a);
}
}
}
public class Test{
public static void main(String [ ] args){
//通过外部类找到内部类
// 外部类名.内部类名 变量 = new 外部类对象( ).new 内部类对象();
//变量.内部类方法( )
Outer.Inner in new Outer( ).new Inner( );
in.inner( );
}
}
2.成员内部类的同名变量
public class Outer{
int i=1;
class Inner{
int i=2;
public void inner( ){
int i=3;
System.out.println(this.i);
}
}
}
包
1.类中包的格式声明:
package 包名.包名......;
- 包的声明必须在有效代码的第一行
package cn.itcast;
import java.util.Scanner;
import java,util.Random;
public class Demo{ }
2.包的访问
在访问类时,为了能找到该类,必须使用含有包名的类全名
包名.包名......类名
例: java,util.Scanner
java.util.Random
带包的类,创建对象格式: 包名.类名 变量名 = new 包名.类名();
cn.itcast.Demo d = new cn.itcast.Demo( );
3.important 导包
格式:
import 包名.类名;
public | protected | default | private | |
---|---|---|---|---|
同一类中 | Y | Y | Y | Y |
同一包中 | Y | Y | Y | |
不同包的子类 | Y | Y | ||
不同包中的无关类 | Y | |||
归纳:在日常开发过程中,编写的类、方法、成员变量的访问
- 要想仅能在本类中访问,使用private修饰;
- 要想本包中的类都可以访问,不加修饰符即可;
- 要想本包中的类与其他包中的子类可以访问,使用protected修饰
- 要想所有包中的所有类都可以访问,使用public修饰。
- 注意:如果类用public修饰,则类名必须与文件名相同。一个文件中只能有一个public修饰的类。
构造代码块
- 构造代码块是定义在类中成员位置的代码块
-
- 构造方法,new一次,执行一次
-
- 构造代码块,new一次,执行一次,优先于构造方法
-
- 静态代码块,只执行一次。
public class Test{
public static void main(String[ ] args){
new Person ("张三",20);
}
}
public class Person {
private String name;
private int age;
public Person(String name ,int age){
this.age = age;
this .name=name;
System.out.println("我是构造方法。");
}
//构造代码块 (先于构造方法)
{
System.out.println("我是构造代码块。");
}
//静态代码块(最先)
{
System .out.println("我是静态代码块");
}
}