类的构造方法:
1,构造方法的名字和类名相同,没有返回值,
2,不能直接调用构造方法,通过new关键字来调用,从而创建类得实例
3,都要求有构造方法,如没有定义构造方法,编译器会提供缺省的构造方法,即不带参数
例:public class B
{
int x,y;
B(int a,int b)
{
x=a;
y=b;
}
void output ()
{
System.out.println(x);
System.out.println(y);
}
public static void main(String[] args) {
B bai;
bai =new B(3,3);
bai .output();
}
}
缺省的构造方法
public class b
{
int ,y;
void output ()
{
system.out.println(x);
system.out.println(y);
}
public static void main(string[] args)
{
b bai;
bai=new b();
bai.x=5;
bai.y=5
bai.output();
}
}
new 关键字的作用
1,为对象分配内存空间,
2,引起对象构造方法的调用
3,为对象返回一个引用
方法的重载
方法的名称相同,但参数类型或个数步同
特殊变量this
this变量代表对象的本身
当类中有俩个同名的变量,一个属于类(类的成员变量)而另一个属于特定的方法(方法中的局部变量)用this区分成员变量和局部变量
用this简化构造函数的调用
静态方法和静态类
静态方法和静态变量属于某个类,而不属于类的对象
静态方法和变量的引用通过类名直接引用
在静态的方法中不能引用非静态的方法和变量,而非静态的则可引用静态的
对象也可以调用静态的方法
静态方法:类方法
非静态方法:实例方法
用final申明一个常量(常量通常用大写)
final double x=PI=3.1415926;
初始化,可以在申明的时候,也可在构造函数中初始化
为了节省内存,常量申明为静态的
static final double x=3.1415;
定义静态的常量必须在申明的时候初始化
成员方法和成员变量
继承:extends
在java中,不允许多继承
特殊变量super,提供了对父类的访问,可使用super访问父类被子类隐藏的变量或覆盖的方法
例子:
class animal
{
int height,weight;
void eat()
{
system.out.println("animal eat")
}
void sleep()
{
system.out.println("animal sleep")
}
void breathe()
{
system.out.println("animal breathe")
}
class fish extends animal
{
int heigh;
void breath()
{
super.breathe;
super.height=40;
system.out.println("fish buble")
class integration
{
public static void main (string[] args)
{
fish fh=new fish();
fh.height=30;
fh.brethe();
}
}
super
每个子类构造方法的第一条语句,都是隐含的调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错
父类的构造方法:animal (int x,int y);
子类的构造方法:fish{ super()};不行……
应为fish{ super(2,3)}
构造方法不能被子类继承!!!
*多态性:通过覆盖父类的方法实现,在运行时根据传递的对象引用,来调用相应的方法
instanceof 判断一个变量是否是另一个变量的实例
animal an=new animal()
fish fh=new fish()
if(fh instanceof animal){ system.out.println("fh is instanceof animal")}
if(an instanceof fish){system.out.println("an is not instanceof fish)}
实例:面向对象的程序设计
问题:求一个长方行的面积和周长
思考方式:
1,一个长方形可以看做一个长方形的对象
2,一个长方形对象有俩个状态(长和宽)俩个行为(面积和周长)
3,将所有长方形的共性抽取出来,设计一个长方形的类
4,通过长方形对象的行为,可求出 某个长方形对象的周长和面积
class common
{
int l,w;
int perimeter()
{
return 2*l*w;
}
int area()
{
return l*w;
}
public static void main(string[] args)
{
conmom com1=new common;
common1.l=5;
common1.w4;
system.out.println("the perimeter is"+common1.perimeter());
system.out.println("the area is"+common1.area());
}
第三课
包:
package语句必须是文件中的第一条语句
package cn.mybole;
包应对应着文件系统的目录层次结构
在,package中,用点来指明包的层次结构
编译并生成包
1,在当前目录下生成包
java-d.test.java
2,在指定目录下生成包
java-d E:/javalessontest.java
import语句:
引入包中的类:importjava.io.flic;
引入整个包:importjxva.io.*;
在同一个包中类可以相互引用,不需要import语句
package cn.mobole
importjava.io.flic;
class test
{
public static void main(string[] args)
{
test t=new test();
java.io.file.f;
syetem.out.println("tes");
}
一个包要访问另一个包中的文件,要引入,且只能访问到申明为public类
若类前面什么都没加,即为缺省的类,只能被同一个包中被访问
类的访问说明符
1,public
2,default(不加访问说明符时)
类的其他修饰符
1,final
2,abstract(抽象的类)
final修饰的话不能被继承,被修改
方法的访问说明符
1,public
2,protected
3,default
4,private
同类 1,2,3,4,
同包 1,2,3
子类1,2
通用性 1
方法的其他修饰符
1,static
2,final
3,abstract
4,native
5,synchronized(重复)
垃圾的回收
class garbge
{
int index;
static int count;
garbge()
{
count ++;
system.outprintln("object"+count"construct")
set ID(count);
}
void setID(int id)
{
index=id;
}
protected void finalize()
{system.outprintln("object"+index"reclaimed");
}public static void main(string[] args)
{
new garbge();
new garbge();
new garbge();
system.gc();
}
}
接口的应用
interface sport
{
void run;
void jump;
}
class anthlete implements sport
{
public void run()
{
system.outprintln("run");
}
public void jump()
{
system.outprintln("jump");
}
public static void main(string[] args)
{
anthelele zhangsan=new anthlete();
zhangsan.run;
zhangsan,jump;
}
}
接口连接模块与模块之间
接口中的所有方法都得实现
接口可以多继承
内部类
内部类对象可以随便访问外部类的所有成员
例子:
class Outer
{
private int index=100;
class Inner
{private int index=50;
void print()
{
int index=30;
system.outprintln(index);
system.outprintln(this.index);
system.outprintln(outer.this.index);
}
void print()
{
Inner inner=new inner();
inner.print();
}
class test
{
public static void main(string[] args)
{
Outer outer=new outer();
outer.print();
}
异常处理
异常类和错误类try/catch/final
try {expect.decision(5,0);}
catch(expection e)
{system.outprintln(" ");}
system.outprintln(" finsh")
(string) getMessage
(string) toString
(void) printStackTrace 打印异常信息的位置
RuntimeException
抛出异常
java编程规范
package命名:全部小写
class interface大写字母开头,其余都小写
class的变量名和方法名,一个小写字母开头,后面的单词用大写字母开头:getBlance
static final全部大写
参数的命名,与变量命名一致
数组的命名:byte[]buffer(缓冲器)