包的概念
什么是包:包就像C里面的头文件一样,头文件里面放的全部都是一些函数。与头文件不一样的是,包里面放的全部都是定义的类。 我们可以定义很多类,然后根据类的作用不一样可以把相同作用的类,放入同一个包里面
那么在引用某个类时,一定要先找到这个类对应的包。然后通过import 包名。
包的实质:包的实质就是文件夹。把很多*.class文件放入与*.java源文件相当的一个文件夹中,这个文件相对于源文件来说就一个包。由于文件夹里面还可以包括文件,所以包里面还可以包含其它包
包的命名:包的命名是根据文件夹的层次方式来命名的,只不过文件夹之间的分隔符是"\",而包的分隔符是"."。比如:chen.mypage。表示相当于源文件来说,它的子文件夹下面的子文件夹下面的mypage下面。
包的使用:由于包里面包含了很多类,所以在使用这些类的时候就必须要引入包。引入包可以使用
import 包名.*表示把一个包下面的所以类都引用到程序中来
系统包:java为我们根据作用不同,提供了很多系统包,在这些系统包里面有很多类。常见的系统包
1)语言包:(java.lang)里面装了处理字符串,数字函数处理类等[如math类等]
2)实用程序包(java.util)里面装了处理日期,时间的类
3)输入输出包(java.io )里面装了用来处理输入输出的类
4)网络包(java.net)里面装了用来处理网络信息的类。
5)图形用户接口包(java.swing)里面装了用来处理图形的类。当然还有很多
自己定义包:
2)通过package 包名。格式来创建用户自定义的包
说明:
如果我们在一个文件夹下面创建两个类*.class虽然我们没有特别指定package但是java会自动将两个类放 入java的默认包。默认包没有名称
this关键字
1:在java类的函数成员里面,this代表当前对像的引用。表示"我"的含义 比如:
class chen
{
private int save;
public void show()
{
save=save+1;
//
this.save=this.save+1 //此处的this就代表demo
}
}
class chedemo
{
public static void main(String st[])
{
chen demo=new chen();
demo.show();
}
}
2:其实在java类中,在一个方法里面来引用一个类的成员函数和数据成员都隐含有一个this。表示"我的"
3:也就是说this关键字,可以省略。但是在有些情况下。必须要使用this关键字
1):当一个方法里面的局部变量,与类的数据成员同名时,为了区分是方法的局部变量,还是类的数据成员必 须要用this来区别.而我们一般为了程序的可读性,总是把类的数据成员与方法里面的局部变量同名。比如
class oper
{
private int n1,n2;
public void setnumber(int n1,int n2)
{
this.n1=n1; //如果不要this.则会认为是局部变量n1赋给n1
this.n2=n2;
}
}
2):一个对像要把自己作为参数传给另外一个对像时,就需要用到this。
class sum
{
public void show(jc demo)
{
demo.show();
}
}
class jc
{
public void exec(sum demo)
{
demo.show(this);
}
public void show()
{
System.out.println("类jc的show方法");
}
}
class testdemo
{
public static void main(String st[])
{
jc jcdemo=new jc();
sum sumdemo=new sum();
jcdemo.exec(sumdemo);
}
类的继承性
什么是类的继承性:
人类在接受一个新事物时,不可能一下子把新事物认识透彻,这就需要一个循序渐进的一个过程。往往是在前人的认识基础上,后人进一步对该事物进行研究。换句话,后人是在继承前人的基础上来展开新的讨论的。试想一下,要是后人抛弃前人的研究成果来研究新事物的话,则很难。比如:
大哥大-------手机----------小灵通.还有商品的更新换代等。都是类的继承性。
为什么要使用类的继承性:
1:类的继承性使得子类不用重新定义就可以拥有父类的一切属性与方法。
2:类的继承是新的类从已有的类那里得到已有特征。
3:类的继承性充许程序员在保持原有类的基础上,进行更具体、更详细的修改和扩充。
4:由原有的类产生新类时,新类便包括了原类的特征,同时也可以加入自己所特有的新特征
5:原有的类,被称为父类(基类),新类被称为子类(派生类)
6:派生类以后,也可以成为其它新类的父类,这样就形成了一个类的层次的关系
如何定义派生类
格式:
class 派生类名 extends 基类
{
派生类的成员声明
}
说明:
1):由于一子类以后也可以成员另外一个类的父类,这样就形成了一个类家族
2):在类族中,直接参与派生出某类的基类称为直接基类,基类的基类到更高层的基类被称为间接基类
物质(间接基类)-------->食物(直接基类)-------->水果[对于水果类而言]
3)如果不指定派生类继承的基类,则java会自动以Object类作为该类的基类。
4)在java里面里面Object类是所有类的的祖先类,任何类都是直接或间接的继承了Object类。
5)继承关系使得java中所有的类构成一棵树,Object类就是这棵树的根
子类的构造方法
1:子类永远不会继承父类的构造方法,除了构造方法之外的所有方法都由子类继承
2:子类的构造方法可以调用父类的构造方法
3:父类构造方法的调用总是先于子类的构造方法
4:子类可以通过super关键字来调用父类的有参数的构造方法,且super方法一定要作为子类构造方法的第一 条语句,格式:super(参数)
举例:
定义一个人类:有姓名,年龄属性,注意加一个构造函数
定义一个工人:有工号和姓名年龄
定义一个正式工:有工号,姓名,年龄,基本工资,工资小时[继承自工人类]
定义一个小时工:有工号,姓名,工作小时数,每小时工资
派生类的初始化过程
当调用new关键字,创建派生类的对像时。java会首先执行基类里面的无参构造函数,然后才是派生类的构造函 数,这也就是说,基类里面充许:要么没有构造函数,要么就应该有一个无参构造函数,否则会出现语法错误
访问修饰符
private:父类的实例,子类,子类的实例都不可访问,但是父类里面可以访问
protected:父类的实例,子类的实例都不可以访问。子类,父类可以访问
public:子类,子类实例,父类,父类实例都可以访问
默认:与Public一样,只不过只能够在同一个包里面访问,在包外面不能访问,而publi却可以
在包里面与包外都可以访问
方法修饰符
static:静态方法
A:只能够调用其它的静态方法
B:只能够访问静态数据成员
C:不能使用权this或Super关键字
final:可以应用于类、方法、变量
类: 该类不能有子类
方法:该方法不能被重写
变量:该变量的值不能被改变
abstract:应用于方法或类
方法:此方法为抽像方法,只能定义没有实现。
类:此类为抽像类
1:任何包含一个或多个抽像方法的类也应该声明为抽像类。格式:abstract public class 类名
2:抽像方法只有定义没有实现,应该在它的子类中来实现
3:抽像类不能被实例化
4:构造方法与static方法不能声明为abstract。
5:抽像类的任何子类必须实现在抽像类定义的所有抽像方法。
多态性
Java里面有三种实现多态的方法:
重载多态:
一个类中有相同的方法名称,但是参数的个数与类型各不相同
重写多态:
在子类中定义一个与父类同名的方法,那么父类的方法将被子类的方法屏蔽。被称为重写。此时
如果想在子类的方法中调用父类的同名方法时,可以使用super.方法名
接口多态:
A:定义接口:public interface 接口名
B:用类去实现接口:public class 类名 implements 接口名 { }
C:一个类如果实现了某个接口,则这个类一定要把所有在接口中定义的方法都实现
D:一个类可以同时实现多个接口。格式:public class C3 implements IC,IA
评论