定义类,就是设计模板
根据模板生产产品,根据类实例对象
程序就是对象的操作
如何定义类 ?
修饰符 class 类名{
//构造器
修饰符 构造器名(参数列表){
初始化代码;
}
public 类名(){
//初始化对象
num = 10;
name="无名氏";
arr = new float[]{10,20.5,6,7.8};
}
public 类名(int num, String name, float[] arr){
//初始化对象,设置的方法名into
init(num, name, arr);
或
this.init(num, name, arr);
}
//属性
修饰符 类型 属性名;
或
修饰符 类型 属性名=值;
private int num=0;
private String name;
private float[] arr;
//方法
修饰符 类型 函数名(参数列表){
//方法的实现代码
}
public String toString(){
return ...;
}
private void init(int num, String str, float[] arr){
初始化代码;
}
}
构造器的作用:
用于实例化对象,初始化对象,只能使用new关键字调用
new 构造器();
注意:构造器名称必须与类名同名,构造器没有返回类型。
属性的作用:
用于保存对象的状态值,在声明属性可以显式或隐式的赋初始会值。
如果没有显式赋初始会值,所有属性都有默认值,规则:int byte,short,long, float,double都默认为0,boolean默认为false,char编码0,其它引用类型默认为null。
属性在外部调用:对象.属性名(允许访问:有权限)
属性在内部调用:this.属性名或属性名(当属性名与局部变量有命名冲突时,属性表示为this.属性名,如果没有前缀就是指局部变量)
注意:在类中定义的属性,实例化成对象后,每个同类型的对象都有相同的属性作为对象数据成员。
方法的作用:
用于描述对象的行为,是外部访问接口.由两个部份构造:
声明和实现
//声明
public String toString()
//实现部份
{
return ...;
}
在外部调用:对象.方法名();(允许访问:有权限)
在内部调用:this.方法名()或方法名()
关于访问修饰符:
中文描述 关键字 类的内部 同包的类 子类 不同包非子类
公共的 public 允许 允许 允许 允许
受保护的 protected 允许 允许 允许 不允许
默认 允许 允许 不允许(不同包的子类) 不允许
私有的 private 允许 不允许 不允许 不允许
class(类) 只能用public和默认两个修饰符(内部类除外)
class ClassA{
//内部类
class ClassB{
}
}
构造器的修饰符:public|protected|默认|private
属性的修饰符:public|protected|默认|private
方法的修饰符:public|protected|默认|private
例如修饰属性:
public int a;//公共的属性
protected int b;//受保护的属性
int c; //默认权限的属性
private int d; //私有的属性
包:定义的类的域名
package 打包用的关键字
一个类文件只能使用一次,并且必须是代码中的第一行(除注释以外)。
import 导入包的关键字
一个类文件可以多次使用import,使用的顺序
一个类文件可以同时定义多个类,但只能有一个publick类,其它只能权限的类.
package...
import ....
import ....
import ....
import ....
public class A{
...
}
class B{
}
class C{
}
---A.java文件---
package x; public clas A{ public int a;//公共的属性 (都可以访问) protected int b;//受保护的属性 (同包或子类都可以访问) int c; //默认权限的属性 (同包可以访问) private int d; //私有的属性 (一个类内猜可以访问) public void fun(){//所有属性都可访问 System.out.println(a); System.out.println(b); System.out.println(c); System.out.println(d); } }
---B.java文件---
package x; public clas B{//B类与A类同包 public void fun(){//所有属性都可访问 A obj = new A(); System.out.println(obj.a); System.out.println(obj.b); System.out.println(obj.c); System.out.println(obj.d);//出错,不能访问 } }
---C.java文件---
package y; public clas C{//C类与A类不同包非子类 public void fun(){//所有属性都可访问 A obj = new A(); System.out.println(obj.a); System.out.println(obj.b);//出错,不能访问 System.out.println(obj.c);//出错,不能访问 System.out.println(obj.d);//出错,不能访问 } }
---D.java文件---
package x; public clas D exdents A{//D类是A类同包的子类 public void fun(){//所有属性都可访问 A obj = new A(); System.out.println(obj.a); System.out.println(obj.b); System.out.println(obj.c); System.out.println(obj.d);//出错,不能访问 } }
---E.java文件---
package y; public clas E exdents A{//E类是A类的子类,但不同包 public void fun(){//所有属性都可访问 A obj = new A(); System.out.println(obj.a); System.out.println(obj.b); System.out.println(obj.c);//出错,不能访问 System.out.println(obj.d);//出错,不能访问 } }