zoukankan      html  css  js  c++  java
  • 学习打卡2

    今天学习了抽象,接口以及封装
    以下是看完博文后学习提取到的知识点以及代码
    抽象方法:只有声明,没有具体的实现。抽象方法必须用abstract关键字进行修饰。
    抽象类:用abstract关键字修饰的类是抽象类。
    注意:因为抽象类中没有具体的实现方法,所以抽象类不能创建对象。抽象类不一定含有抽象方法,但如果一个类中含有抽象方法,那么这个类一定是抽象类。抽象类除了被继承外,没有任何意义。抽象类中也可以有成员变量和成员方法。

    抽象类和普通类的主要有三点区别:
      1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
      2)抽象类不能用来创建对象;
      3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

    接口:用关键字interface来声明,它是对行为的抽象。
    接口中同样也可以含有变量和方法。注意:接口中的变量全部为public static final,方法全部为public abstract。接口中的方法必须都是抽象方法(一般情况下,不在接口中定义变量)
    用implements关键字来实现接口:

    class iclass implements Interface1,Interface2{
    }
    

    一个类可以同时实现多个接口,如果一个类实现了某个接口,就必须实现改接口中的全部方法。

    引用原博文中的一个例子:飞机和鸟是不同类的事物,但是它们都有一个共性,就是都会飞。那么在设计的时候,可以将飞机设计为一个类Airplane,将鸟设计为一个类Bird,但是不能将 飞行 这个特性也设计为类,因此它只是一个行为特性,并不是对一类事物的抽象描述。此时可以将 飞行 设计为一个接口Fly,包含方法fly( ),然后Airplane和Bird分别根据自己的需要实现Fly这个接口。然后至于有不同种类的飞机,比如战斗机、民用飞机等直接继承Airplane即可,对于鸟也是类似的,不同种类的鸟直接继承Bird类即可。从这里可以看出,继承是一个 "是不是"的关系,而 接口 实现则是 "有没有"的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系,比如鸟是否能飞(或者是否具备飞行这个特点),能飞行则可以实现这个接口,不能飞行就不实现这个接口。

    以下是今天学习后的代码:

    import java.util.Scanner;
    public class AlarmDoor extends Door implements Alarm{
    	public void Open() {
    		  System.out.println("开门");
    	  }
          
    	 public void Close() {
    		 System.out.println("关门");
    	 }
    //实现接口中的方法
    	 public void alarm() {
    		 System.out.println("报警");
    	 }
          public static void main(String[] args){
           Scanner s = new Scanner(System.in);
           int i = s.nextInt();
           AlarmDoor d = new AlarmDoor();
           if(i==1)
           d.Open();
           else {
           if(i==0)
           d.Close();
           else 
        	   d.alarm();
          }
          }
    }
    
    public interface Alarm {
           public abstract void alarm();
    }
    
    public abstract class Door {
           abstract public void Open();
           abstract public void Close();
    }
    
    

    封装:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法类实现对隐藏信息的操作和访问。

    package encapsulation;
    
    public class Student {
           private String name;   
           private int age;
    
    public void setname (String name) {
    	this.name = name;
      }
    public String getname() {//外部只能通过该函数对类成员变量进行访问
    	return name;
    }
    public void setage(int age) {   //外部只能通过该函数对成员变量进行修改
    	this.age = age;
    }
    public int getage() {
    	return age;
    }
    

    以下是原文链接
    http://www.cnblogs.com/dolphin0520/p/3811437.html

  • 相关阅读:
    JavaSE 基础 第54节 继承Thread类创建线程
    flask 项目部分业务逻辑
    js生成随机的uuid
    增量式爬虫
    分布式爬虫
    scrapy 的分页爬取 CrawlSpider
    scrapy 请求传参
    scrapy增加爬取效率
    scrapy框架
    模拟登陆request-session
  • 原文地址:https://www.cnblogs.com/susususu/p/10719232.html
Copyright © 2011-2022 走看看