zoukankan      html  css  js  c++  java
  • 0120 面向对象2

    1、抽象类

    当定义了抽象函数的类也必须被abstract关键字修饰,被abstract关键字修饰的类是抽象类。

    抽象方法必须在抽象类里边,但抽象类里可以没有抽象方法

    抽象类定义格式:

    abstract class 类名 {

    }

    抽象方法定义格式:

    public abstract 返回值类型 方法名(参数);

    注:抽象方法只有修饰符,返回值,方法名,没有方法主体

    例:创建一个抽象类(计算面积,这里求面积是一个共性)

    public abstract class Huge {
    求面积的抽象方法
      public abstract double get();

    }

    创建一个求圆面积的类,继承这个抽象类

    public class Circle extends Huge {
      private int r;
      public int getR() {
        return r;
      }
      public void setR(int r) {
        this.r = r;
      }
      public double get() {
        return r*r*Math.PI;
      }
    
    }

    创建一个求正方形的面积的类,继承这个抽象类

    public class Square extends Huge {
    
      private double a;
    
      public double getA() {
        return a;
      }
    
      public void setA(double a) {
        this.a = a;
      }
    
      public double get() {
        return a*a;
      }
    
    }
     

    创建一个测试类

    public class Demo01 {
    
      public static void main(String[] args) {
        Circle c=new Circle();
        c.setR(2);
        System.out.println(c.get());
        Square s=new Square();
        s.setA(3);
        System.out.println(s.get());
    
      }
    
    }

    2、接口

    借口是功能的集合

    借口定义关键字 interface

    格式:

    public interface 接口名 {

    抽象方法1;

    抽象方法2;

    抽象方法3;

    }

    类与接口之间的关系是实现关系 关键字 implement

    格式:

    class 类 implements 接口 {

        重写接口中方法

    }

    接口实例:创建一个smoking接口

    public interface Smoking {
    	//修饰符abstract 是固定的
    	public abstract void smoke();
    }
    

      创建一个person抽象类

    public class Person implements Smoking{
    	public void smoke() {
    		System.out.println("人类抽烟");
    	}
    }
    

      创建一个猪类

    public class Pig implements Smoking{
    
    	public void smoke() {
    		System.out.println("猪类抽烟");
    	}
    
    }
    

      上述例子中 smok接口是一个人类和猪类共性

    在接口中的变量特点:

    在接口中所有的成员变量都是常量,常量一次赋值终生不变,不能不赋值

    若在接口中定义一个int a=0 ;实际的书写方式是:

    public static final int a=0; 

    public:公共的,在任何地方都可以访问
    static:被static修饰的可以直接使用类名调用类名.属性名
    final :最终的,被final修饰的变量叫常量一次赋值,终身不变

    接口可以多实现,也就是说,一个类中可以实现多个接口,也可以在继承类的同时来实现多个接口

    例:以上述创建somking接口为例

    再创建一个drink接口

    public interface Drinking {
    
    	public abstract void drink();
    }
    

      创建一个monkey抽象类

    //抽象类
    public abstract class Monkey {
    //抽象方法
    	public abstract void eat();
    }
    

      创建一个person类,让这个类继承monkey抽象类,并且实现somk和drink接口(含义是,人类能吃,抽烟和喝酒)

    public class Person extends Monkey implements Smoking,Drinking{
    	public void smoke() {
    		System.out.println("人类抽烟");
    	}
    
    	public void drink() {
    		System.out.println("人类喝酒");
    	}
    
    	public void eat() {
    		System.out.println("人类吃饭");
    	}
    
    }
    

      创建一个猪类,只让这个类继承monkey类,实现smok接口(含义是,猪类能吃,抽烟,这里并没有实现drink接口,含义是猪类不会喝酒)

    public class Pig extends Monkey implements Smoking{
    	public void smoke() {
    		System.out.println("猪类抽烟");
    	}
            public void eat() {
    		System.out.println("猪类吃饭");
    	}
    
    }        
    

      注:说明接口是除了类与类之间的共性之外的额外特性的集合,有功能就实现这个接口,没有这个功能就不实现。

    接口多继承

    学习时发现,类与类之间存在单继承关系,但接口可以使多继承

    例:

    interface Fu1{
    	void show();
    }
    interface Fu2{
    	void show1();
    }
    interface Fu3{
    	void show2();
    }
    interface Zi extends Fu1,Fu2,Fu3{
    	void show3();
    }
    

      此时,Zi类中存在四个方法

    总结:

    类和类的关系:继承关系  extends  单继承
    类和接口的关系:实现关系  implements 多实现
    接口和接口的关系:继承关系  extends 多继承

    java支持多继承吗;分情况,类和类之间是单继承,接口和接口中可以使多继承

    类支持多继承吗:不支持

  • 相关阅读:
    反射入门
    把数据库表的信息添加到list集合里面
    简单的事务分析及使用
    java-web与jdbc 的使用
    菜鸟入门bootstrap
    如何彻底的卸载mysql
    发生系统错误 1067,解决方案
    纯js的购物车案例
    idea里面怎么把自己项目添加maven
    js入门
  • 原文地址:https://www.cnblogs.com/-gongxue/p/14301698.html
Copyright © 2011-2022 走看看