黑马程序员--Java学习日记之面向对象(多态,接口和其他关键字)

------- android培训、 java培训、期待与您交流! ----------

 多态:
    两种表现形式:方法重写;方法重载;
    概念:(同一个对象响应不同消息的能力)
    前提:
        A:要有继承或实现关系;
        B:要有方法重写;
        C:要有父类(父接口)引用指向子类对象;
 抽象类:
    有抽象方法的类就是抽象类。
    抽象方法的由来:当我们不明确方法的具体实现的时候,就。。
    特点:抽象类不能被实例化
        成员变量,成员方法,构造方法    
 接口:    
    定义关键字,实现关键字
    接口就是特殊的抽象类

内部类:
 1.成员内部类:
  1).同其它成员一样,可以访问外部类中的其它成员;即使是私有的;
  2).实例化一个"成员内部类"的对象:
   A.Bb = new A().new B();
  3).成员变量的覆盖:


class A{
    int num = 10;
    class B{
     int num = 20;
     void show(){
      int num = 30;
      System.out.println(num);//30
      System.out.println(this.num);//20
      System.out.println(A.this.num);//10
     }
    }
   }

局部内部类:
  1).定义在某个方法或其它局部代码内的内部类;
  2).可以获取局部内部类的对象,但此局部内部类,要实现一个外部定义的接口或继承一个父类;
  3).注意:局部内部类可以访问局部变量,但是要求这个局部变量必须被声明为:final的(常量)


class A{
    int num = 10;
    void show(){
     int num = 20;
     class B{
      void f(){
       System.out.println("num = " + num);
      }
     }
    }
   }

匿名内部类:
  1).定义在局部;
  2).跟局部内部类一样,只是可以省略名字:


  interface IA{
    void fun();
   }
   class A{
    IA show(){
     return new IA(){
      public void fun(){
       System.out.println("子类重写的fun方法");
      }
     }

接口的概述及其特点
 A:接口概述
     从狭义的角度讲就是指java中的interface
     从广义的角度讲对外提供规则(标准、功能)的都是接口 
 B:接口特点
     a:接口用关键字interface表示    
         interface 接口名 {}
     b:类实现接口用implements表示
         class 类名 implements接口名 {}
     c:接口不能实例化
         那么,接口如何实例化呢?
         按照多态的方式来实例化。
     d:接口的子类
         a:可以是抽象类。但是意义不大。
         b:可以是具体类。要重写接口中的所有抽象方法。(推荐方案)
 C:案例演示
     接口特点

接口的成员特点
 A:接口成员特点
     成员变量;只能是常量,并且是静态的并公共的。
             默认修饰符:publicstatic final
             建议:自己手动给出。
     构造方法:接口没有构造方法。
     成员方法:只能是抽象方法。
             默认修饰符:publicabstract
             建议:自己手动给出。
 B:案例演示
     接口成员特点

类与类,类与接口,接口与接口的关系
 A:类与类,类与接口,接口与接口的关系
     a:类与类:
         继承关系,只能单继承,可以多层继承。
     b:类与接口:
         实现关系,可以单实现,也可以多实现。
         并且还可以在继承一个类的同时实现多个接口。
     c:接口与接口:
         继承关系,可以单继承,也可以多继承。
 B:案例演示
     类与类,类与接口,接口与接口的关系

抽象类和接口的区别
 A:成员区别
     抽象类:
         成员变量:可以变量,也可以常量
         构造方法:有
         成员方法:可以抽象,也可以非抽象
     接口:
         成员变量:只可以常量
         成员方法:只可以抽象
        
 B:关系区别
     类与类
         继承,单继承
     类与接口
         实现,单实现,多实现
     接口与接口
         继承,单继承,多继承

class Test_Interface {
	public static void main(String[] args) {
		System.out.println("Hello World!");
	}
}

/*
* A:类与类,类与接口,接口与接口的关系
	* a:类与类:
		* 继承关系,只能单继承,可以多层继承。
	* b:类与接口:
		* 实现关系,可以单实现,也可以多实现。
		* 并且还可以在继承一个类的同时实现多个接口。
	* c:接口与接口:
		* 继承关系,可以单继承,也可以多继承。
*/

interface InterA {
	public abstract void printA();
}

interface InterB {
	public abstract void printB();
}

interface InterC extends InterB,InterA {
}
//class Demo implements InterA,implements InterB {		//这么做不允许是非法的
class Demo extends Object implements InterA,InterB {
	public void printA() {
		System.out.println("printA");
	}

	public void printB() {
		System.out.println("printB");
	}
}


static关键字 
这里先讲讲static关键字的特点 
1.随着类的加载而加载 
2.优先于对象存在 
3.被类的所有对象共享。举例:咱们班级的学生应该共用同一个班级编号。其实这个特点也是在告诉我们什么时候使用静态?如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。 
4.可以通过类名调用,其实它本身也可以通过对象名调用。推荐使用类名调用。静态修饰的内容一般我们称其为:与类相关的,类成员
静态变量和成员变量的区别

 静态变量也叫类变量  成员变量也叫对象变量
 A:所属不同
     静态变量属于类,所以也称为为类变量
     成员变量属于对象,所以也称为实例变量(对象变量)
 B:内存中位置不同
     静态变量存储于方法区的静态区
     成员变量存储于堆内存
 C:内存出现时间不同
     静态变量随着类的加载而加载,随着类的消失而消失
     成员变量随着对象的创建而存在,随着对象的消失而消失
 D:调用不同
     静态变量可以通过类名调用,也可以通过对象调用
     成员变量只能通过对象名调用

final关键字修饰类,方法以及变量的特点
 A:final概述
 B:final修饰特点
     修饰类,类不能被继承
     修饰变量,变量就变成了常量,只能被赋值一次
     修饰方法,方法不能被重写
 C:案例演示
     final修饰特点
final关键字修饰局部变量
 A:案例演示
     方法内部或者方法声明上都演示一下(了解)

     基本类型,是值不能被改变
     引用类型,是地址值不能被改变,对象中的属性可以改变

final修饰变量的初始化时机
 A:final修饰变量的初始化时机
     显示初始化 
     在对象构造完毕前即可


你可能感兴趣的:(黑马程序员--Java学习日记之面向对象(多态,接口和其他关键字))