Java杂谈

一、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!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值