美文网首页
Java02(面向对象)

Java02(面向对象)

作者: 鱼翅大魔王 | 来源:发表于2018-08-16 13:06 被阅读0次

<补档>

自学java时的那些想法(二)

今天是18年4月6日
  • 多态

个人对于多态的理解是:我们可以根据需要,对不同的子类进行不同的方法重写,这样在调用的时候,同样的方法名可能对应不同的功能,也就对应了不同状态。事实上,接口的实现也引用了这种多态的思想。

总结多态发生的条件有以下三点

  • 既然存在子父类关系,那么一定是发生在继承的情况下
  • 子类重写了父类的方法
  • 父类引用指向子类(父类 引用名=new 子类();)。

多态的特点在于我们不需要去管父类的方法里写了什么,而是当我们需要使用时,去找到对应的子类。

多态中会用到引用的类型装换,写法与常用变量相似。
由子类转向父类时是有风险的,反之由父类转向子类是无风险的。
通常会使用instanceof来进行一次判断
A instanceof B:如果A是B的一个实例,返回true,反之如果不是或者A为NULL,则返回False。

虽然抽象父类无法实例化,但是可以利用

Father F=NULL;
Son S=new Son();
F=S;

的方法使得抽象父类指向子类,从而达到实现多态的目的。

  • 抽象类

关键词abstract

用abstract修饰的类或者方法属于抽象类或者抽象方法
抽象类无法生存实例对象,也就是说使用抽象类的时候,我们只能借助继承关系的子类。

于是那个笑话就来了:有人说没有对象可以new一个,而我,怎么new都new不到对象,后来我发现是因为我长的太抽象了,是不能new对象的。(抽象类不能实例化)

抽象方法只需要声明,实现部分在子类中完成,需要注意的是抽象方法没有方法体,所以直接已分号结尾。

  • 接口

关键词 implements

当两个事物有共同点但又不足以构成父子类关系时,我们可以定义共同点的接口(tel中的PlayGames接口)
一个类可以实现多个接口,接口中只允许定义常量不允许定义变量

接口的实现:

1.在使用到接口的类中实现接口的方法,然后在主方法Main()中,我们直接调用接口的方法。
 public class Cire implements CalInterface   
 {  
    public float getArea(float r)   
     {  
       float area=PI*r*r;//计算圆面积并赋值给变量area  
       return area;//返回计算后的圆面积  
     }  
  public float getCircumference(float r)   
   {  
        float circumference=2*PI*r;      //计算圆周长并赋值给变量circumference  
        return circumference;           //返回计算后的圆周长  
    }  
   public static void main(String[] args)   
   {  
      Cire c = new Cire();  
       float f = c.getArea(2.0f);  
        System.out.println(Float.toString(f));  
    }  
}
2.直接使用(类名实例=new 类名){接口方法};)再由实例直接调用方法名。(匿名类实现接口)
interface IA{
    void test();
}
public class TestInnerClass {
    public void method(IA ia){
        ia.test();
    }
    public static void main(String[] args) {
        TestInnerClass obj = new TestInnerClass();
        obj.method(new IA() {
            public void test() {
                System.out.println("运行匿名内部类的test方法");
            }
        });
    }

}
3.new 接口名(接口方法).接口方法()
 new IPlayGame() {
            @Override
            public void playGame() {
                System.out.println("使用直接new一个接口的方式,通过匿名内部类实现接口");
            }
        }.playGame();

相关文章

  • Java02(面向对象)

    <补档> 自学java时的那些想法(二) 今天是18年4月6日 多态 个人对于多态的理解是:我们可以根据需要,对不...

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

  • 总结.Net基础知识——献给即将入坑的同行们(一期)

    什么是面向对象 面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP; 通俗...

  • 面向对象基础

    面向对象编程包括: 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的编程实现(OOP) 面向对象思想...

  • 20-OOP类与对象

    面向对象 Object Oriented 学习面向对象:XXOO 面向对象的学习: 面向过程和面向对象的区别: 面...

  • JavaScript面向对象核心知识归纳

    面向对象 概念 面向对象就是使用对象。面向对象开发就是使用对象开发。 面向过程就是用过程的方式进行开发。面向对象是...

  • 面向对象(未完成)

    面向对象 标签(空格分隔): 面向对象 第一章:面向对象(上) 什么叫面向对象 面向过程、面向对象、两者区别 构造...

  • 面向对象:创建对象&继承

    博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...

  • 面向对象

    了解什么是面向对象 首先,我们学习面向对象,要了解什么是面向对象,面向对象的重要概念:类,对象。 面向对象提出的这...

网友评论

      本文标题:Java02(面向对象)

      本文链接:https://www.haomeiwen.com/subject/idwnbftx.html