一、JAVA中的类
在JAVA中,我们就把这些行为属性归类——这就是类的由来,可用 new 将类与对象关联起来。 现实生活中的实例—汽车,是一个对象,汽车有属性和行为:属性:发动机、底盘、外壳;行为:速度、启动、停止。二、JAVA的继承
理解继承:类是有共性的,比如人,学生是人,小学生是学生,大学生也是学生。学生与人有共性,小学生与学生有共性。注意:JAVA是允许单继承的,私有成员private 是无法被继承的。
JAVA中与继承相关的:super
1. 表示调用父类的构造函数,特殊语法,不是变量,没有类型2. 可以在一个类的非static成员内部使用。
3. 调用父类的protected函数。
this
1. 一个对象只含有属性的空间,n个对象公共一份方法的拷贝2. 可以表示构造函数的传递,this(a,b)表示调用另外一个构造函数。
3、可以在一个类的非static成员内部使用,表示当前这个对象。
三、final修饰类中的若干属性
final修饰类中的若干属性表示: 该属性必须被赋值并且只能赋值一次初始化方式有两种:(只能选一种)
1、定义成员变量的同时初始化
2、在类中所有的构造函数中初始化
3、注意:一个普通方法内部都不可能修改final修饰过的成员变量值
final修饰整个类:如果认为一个类已经很完善了并且不需要定义子类来继承它时,可以使用它,因为它表示该类不能被继承。
使用格式:public final class XX{......}
四、构造方法
1. 定义:名字和类名一样 无返回值2. 注意事项:
(1)一个类对象只能调用一个构造方法
(2)一个类至少有一个构造方法
(3)如果自己定义了构造方法,编译器将不再提供默认的构造方法
五、访问控制符
只有private的不能在外部访问,类的内部访问控制符是透明的六、包
为了更好地组织类,JAVA提供了包机制,用于区别类的命名空间。
七、抽象类
1. 抽象类的由来
利用抽象类是为了更好的对类加以分类,就如同人们不但给果类取名为:苹果、香蕉、葡萄、西瓜,而且把它们叫做水果,“水果”就是一个抽象的词,对所有具体水果(苹果、香蕉、葡萄、西瓜)进行归类。JAVA是用来模拟现实世界的,所以,也存在抽象类。JAVA中,抽象类通常用来作为一个类族最顶层的父类,用最底层的类来表示现实中具体的事物,用最顶层的类表示该类族所有事物的共性。
2. 抽象方法
在定义JAVA方法时可以给出方法头,而不给出具体方法内部实现代码,这样的方法称为抽象方法。在JAVA中,凡是没有方法体的方法必须使用关键字abstract修饰为抽象方法,凡是含有抽象方法的类都必须的声明为抽象类。3. 抽象类
用abstract关键字来修饰一个类时,该类叫做抽象类;包含抽象方法的类必须声明为抽象类,但是,一个抽象类中却可以包含任何抽象方法,尽管比较少见。抽象类不一定有抽象方法,有抽象方法的一定是抽象类。
不能new出抽象类对象,但是可以定义一个抽象类的引用。我们可以把一个子类对象的地址赋给抽象类,作为引用;然后通过抽象类的引用,调用子类从父类继承过来的方法,即 抽象类也可以实现多态。
例子:假设A是抽象类,B是A的子类,并且完全继承了A的所有方法,代码如下:
abstract class A {
abstract public void f(); //在定义JAVA方法时可以给出方法头,而不给出具体方法内部实现代码
}
class B extends A {
public void f() {
System.out.println("BBB");
}
}
输出结果:BBB
八、接口
1. 接口中定义的属性必须是public static final的,而接口中定义的方法则必须是public abstract的,因此这些修饰符可以部分或者全部省略。接口定义的属性的值在类中不能被修改:
//接口中是不可以定义构造函数的
interface Interface {
int i = 10; //不能改为 int i, 定义变量是要赋初值
}
class A implements Interface {
public A(int j) {
//this.i = j; // 接口It中的属性i 是public static final 类型,不可以在实现类中被改变
}
}
public class InterfaceTest {
public static void main(String[] args) {
A aa = new A(10);
System.out.println("aa.i = " + aa.i);
System.out.println("A.i = " + A.i);
}
}
输出结果:
aa.i = 10
A.i = 10
2. 一个类只能定义某个接口,不能继承某个接口,但是接口可以继承接口,接口还可以继承多个接口;一个类可以在继承一个父类的同时实现一个或者多个接口,但extends关键字必须在implements之前,例如:
class A{
}
interface Interface1 {
}
interface Interface2 {
}
//接口可以多重继承,即一个接口可以有多个父接口,但是一个类只能有一个父类,Java类不允许多继承,接口却允许多继承
interface Interface3 extends Interface1, Interface2 {
}
interface Interface4 {
int i = 20;
}
//一个类可以在继承一个父类的同时实现一个或多个接口,但extends关键字必须的在implements 之前
class T extends A implements Interface4,Interface3 {
}
public class InterfaceTest {
public static void main(String[] args) {
System.out.println("hello!");
}
}
输出结果:
hello!